【问题标题】:.htaccess code questions about SSL and canonicalization.htaccess 关于 SSL 和规范化的代码问题
【发布时间】:2020-01-27 20:32:09
【问题描述】:

简而言之,我的网站只有一个付款页面。已安装 SSL 证书,但该支付页面不需要 SSL 证书。

关于我的 .htaccess 文件 - 我目前使用以下代码分隔我的付款页面。我还阻止来自semalt.com 的访客。不记得确切原因,但我想我当时收到了他们不必要的关注(垃圾邮件)。

我想知道的是:

  1. 此代码在 5 年后仍然有效吗?
  2. 我是否需要通过指向 www 或非 www 版本的 mywebsite 来解决规范化问题(重要的是不影响那个重要的 https 支付页面);有必要吗?
 1. Options +FollowSymlinks
 2. RewriteEngine On
 3. RewriteBase /
 4. # RewriteCond %{HTTP_HOST} !^example\.com$ [NC]
 5. # RewriteRule .* http://example.com%{REQUEST_URI} [L,R=301]
 6. 
 7. RewriteCond %{HTTPS} off
 8. RewriteRule ^payment\.html$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
 9. 
 10. # block visitors referred from semalt.com
 11. RewriteEngine on
 12. RewriteCond %{HTTP_REFERER} semalt\.com [NC]
 13. RewriteRule .* – [F]
 14. # End semalt block
 15. # block referer spam buttons for website
 16. RewriteEngine On
 17. RewriteCond %{HTTP_REFERER} buttons\-for\-website\.com
 18. RewriteRule ^.* - [F,L]
 19. # End buttons for website block
 20. 
 21. ErrorDocument 404 /404.html

【问题讨论】:

    标签: .htaccess redirect https canonicalization


    【解决方案1】:

    我要解决的主要问题是,您只是为您的付款页面重定向到 HTTPS。您应该为您的整个站点强制使用 HTTPS - 无处不在。如今,浏览器会提醒用户注意,如果使用 HTTP(谷歌浏览器在 URL 旁边声明“不安全”),他们正在浏览不安全的连接,这对用户信任没有任何作用。这是过去 5 年发生的主要变化 - HTTPS 是强制性的无处不在

    现在没有充分的理由在各处使用 HTTPS。

    假设您网站的其余部分已经“准备好”HTTPS(我假设它必须是并且您没有将用户从您的付款页面发送回 HTTP?!)然后将 HTTP 更改为 HTTPS 重定向以包括您的整个网站:

    # HTTP to HTTPS
    RewriteCond %{HTTPS} off
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    

    2) 我是否需要通过指向 www 或非 www 版本的 mywebsite 来解决规范化问题(重要的是不影响那个重要的 https 支付页面);有必要吗?

    是的,你应该这样做。您已经在 .htaccess 文件的顶部有这些指令 - 但它们被注释掉了吗?您可能已经在页面的头部设置了 rel="canonical" 元素,但是,如果 www 和非 www 都可用,那么这可能是 重复的内容(相同的内容可从 2 个或更多不同的网址)。您需要决定哪个:www 或非 www?你目前看好哪个?哪个(主要)已经被索引?您的付款页面使用哪个? (希望以上所有的答案都是一样的。)

    作为此重定向的一部分,还可以直接重定向到 HTTPS。这应该在当前 HTTP 到 HTTPS 重定向之前(与当前在您的 .htaccess 文件中的顺序相同):

    # Redirect to non-www
    RewriteCond %{HTTP_HOST} !=example.com
    RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L]
    

    请注意,上述从 www 到非 www 的重定向假设您没有使用任何其他子域。要重定向到www.example.com,只需更改example.com 的两个实例。

    RewriteCond %{HTTP_REFERER} semalt\.com [NC]
    RewriteRule .* – [F]
    

    好的,如果它有帮助 - 检查您的服务器日志,如果这对您有任何帮助。但是将.* 正则表达式更改为^(效率略高)。并且任何阻塞指令都应该位于文件的最顶部(您不想费心规范化这些请求)。

    RewriteCond %{HTTP_REFERER} buttons\-for\-website\.com
    RewriteRule ^.* - [F,L]
    

    再次 - 好的,它有帮助(是吗?!)。如上所述优化正则表达式。 CondPattern 中不需要反斜杠转义文字连字符(除非它们出现在字符类的中间)。与F 一起使用时,不需要L 标志。

    其他说明:

    • 无需重复RewriteEngine On 指令。
    • 您当前的指令不需要RewriteBase / 指令。
    • 在文件顶部定义ErrorDocuments 更清晰。

    总结

    综合以上几点,我们有:

    Options +FollowSymlinks
    
    ErrorDocument 404 /404.html
    
    RewriteEngine On
    
    # block visitors referred from semalt.com
    RewriteCond %{HTTP_REFERER} semalt\.com [NC]
    RewriteRule ^ – [F]
    
    # block referer spam buttons for website
    RewriteCond %{HTTP_REFERER} buttons-for-website\.com [NC]
    RewriteRule ^ - [F]
    
    # Redirect to non-www
    RewriteCond %{HTTP_HOST} !=example.com
    RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L]
    
    # HTTP to HTTPS
    RewriteCond %{HTTPS} off
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    

    【讨论】:

    • 我的所有页面上都没有 rel="canonical" 元素;但我现在这样做了。当只有一个页面用于安全目的(例如支付页面)时,是否可以将完整的网站显示为 https?
    • 是的,当然。它不仅“没问题”,而且这样做要好得多。事实上,到目前为止,我想说这是强制 - 特别是因为浏览器主动“警告”用户他们正在浏览一个不安全的网站。 Google Chrome 浏览器会在通过纯 HTTP 提供的任何页面上的 URL 旁边声明“不安全”。想必您并没有在用户访问您的付款页面后主动将其发送回 HTTP?
    • 通常,数据(会话、cookie、身份验证令牌、购物车等)在支付页面和网站的其余部分之间共享。您的“付款页面”是否完全孤立地工作并且没有泄露任何信息? (Cookie 需要仅支持 HTTPS 等。)归根结底……您有什么理由在网站的其他部分使用 HTTPS?
    • “我的所有页面上都没有 rel="canonical" 元素;但我现在有了。” - 有问题的网站是您个人资料中链接的网站吗?由于您似乎错误地设置了规范 URL 并附加了一个尾部斜杠(这只会导致无样式的 404 页面 - 由于使用 relative URL 到静态资源)。
    • 是的,它与我的个人资料中的站点相同。我研究了 rel=canonical 的用法,我发现的所有示例都显示了斜杠。我向您鞠躬,并在我的所有页面上更改为以下格式:code example.com" /> code
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-28
    • 2020-01-14
    • 1970-01-01
    • 2013-01-25
    • 2011-07-31
    • 2020-11-18
    • 1970-01-01
    相关资源
    最近更新 更多