【问题标题】:How do I set canonical URLs and redirect to https?如何设置规范 URL 并重定向到 https?
【发布时间】:2014-10-24 22:40:17
【问题描述】:

我已经将 http 重定向到 https,以及将非 www URL 规范化以重定向到 WWW 版本……嗯,有点。

http://www.domain.com 重定向到https://www.domain.com

http://domain.com 重定向到https://www.domain.com

https://www.domain.com 加载正常

然而, https://domain.com 无法连接(不同的浏览器给出不同的消息)。

我确认 mod_rewrite 已启用。下面是代码:

#Redirect to SSL
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI}[R01,L]
#Canonicalization
RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]
RewriteRule ^(.*)$ https://www.domain.com/$1[L,R01]

两个问题:

1.) 为什么https://domain.com 不路由到https://www.domain.com

2.) 我已经看到了用于重定向的标志 R=301,但是 R01 是什么意思?

谢谢!

【问题讨论】:

    标签: .htaccess mod-rewrite


    【解决方案1】:

    您可以像这样将两者结合起来:

    RewriteCond %{HTTP:X-Forwarded-Proto} !https [OR]
    RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]
    RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301]
    

    一些事情:

    1. R01 不正确,它不是标志,如果不是因为您的标志之前缺少空格,会导致 500 错误
    2. 您缺少分隔目标 URL 和标志的空格:$1[L,R01] 最终被解释为目标 URL 的一部分。

    【讨论】:

      猜你喜欢
      • 2018-08-03
      • 1970-01-01
      • 2012-09-27
      • 2020-08-07
      • 2011-08-16
      • 2018-12-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多