【发布时间】:2017-01-20 19:14:11
【问题描述】:
我正在尝试实现 99% 的工作,但有一个小问题。
假设我的实时网址是https://www.example.com/sample-page/
我希望以下所有 URL 变体重定向到具有 301 状态的实时 URL。
http://example.com/sample-page/
http://www.example.com/sample-page/
https://example.com/sample-page/
以上所有内容都应重定向到https://www.example.com/sample-page/
我设法通过使用下面显示的 htaccess 规则来完成这项工作。
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
上述规则的问题在于:http://example.com/sample-page/ 执行双重重定向。
http://eyeacademy.com/expert-eye-examination/
301 Moved Permanently
https://eyeacademy.com/expert-eye-examination/
301 Moved Permanently
https://www.eyeacademy.com/expert-eye-examination/
200 OK
如您所见,http 重定向到 https,然后 https 非 www 重定向到 https www。我一直在尝试对这条规则进行一些调整并阅读,但我相信这里有人会有更快、更强大的解决方案?
【问题讨论】:
-
把 https 规则放在最后?
-
试过了。它通过添加 www.www 来破坏 https 非 www 的 URL。到域。
-
取消
L最后一条规则。 -
@123 取消 L 对一切期望 http://www.eyeacademy.com/about-us/ 重定向到 https://www.eyeacademy.com/ 而不是 https://www .eyeacademy.com/about-us/
标签: apache .htaccess mod-rewrite https url-redirection