.htaccess 将http和www重定向到https://example.com
目标是将HTTP和www永久重定向到.htaccess 将http和www重定向到https://example.com,.htaccess,redirect,mod-rewrite,.htaccess,Redirect,Mod Rewrite,目标是将HTTP和www永久重定向到https://example.com在具有活动SSL的共享主机服务上 几次尝试;有些涉及如下规则: RewriteEngine On RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://example.com/$1 [R,L] 以及其他涉及Rahil Wazir的StackOverflow post等规则的尝试,包括: RewriteEngine on RewriteCond %{HTTP_
https://example.com
在具有活动SSL的共享主机服务上
几次尝试;有些涉及如下规则:
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://example.com/$1 [R,L]
以及其他涉及Rahil Wazir的StackOverflow post等规则的尝试,包括:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteCond %{SERVER_PORT} !^443
RewriteRule ^(.*)$ http://example.com/$1 [L, R=301]
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteCond %{SERVER_PORT} ^443
RewriteRule ^(.*)$ https://example.com/$1 [L, R=301]
到目前为止,没有任何尝试完全达到目标。你能帮忙吗
请注意
https://www.example.com
还应永久重定向到https://example.com
前提是您没有实现(在这种情况下,您应该实现两个单独的重定向,第一个是在同一主机上的HTTP到HTTPS)然后,您可以在.htaccess
文件的顶部执行以下操作:
RewriteEngine On
# Redirect HTTP to HTTPS (and www to non-www)
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule (.*) https://example.com/$1 [R=302,L]
HTTPS
服务器变量是检查HTTPS是否启用的另一种方法(可以说更可读),而不是显式检查server\u端口
注意,这是一个302(临时)重定向。只有在测试其正常工作时,才将其更改为301(永久)重定向
在测试之前,您需要清除浏览器缓存
您发布的指令存在问题: 这只会将HTTP重定向到HTTPS。它不会规范化
https://www.example.com/
。这也是一个临时(302)重定向
除了语法无效(在重写规则
标志之间有一个空格-这将导致500个内部服务器错误),这只重定向www
和HTTP。但它重定向到HTTP,而不是HTTPS!因此,它不会规范化/重定向http://example.com/
或https://www.example.com
同样,由于上述原因,
RewriteRule
指令在语法上无效。这仅重定向www
和HTTPS。因此,它不会规范化http://example.com/
或http://www.example.com
“Rahil Wazir的StackOverflow post”-看起来你指的是什么?但这涉及到一个不同的问题,有着不同的意图!在这个问题上,他们不想将HTTP重定向到HTTPS,而是在规范化www子域时保持相同的方案-这确实是那些指令所做的。谢谢你,怀特先生-你的解决方案工作得很好!
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://example.com/$1 [R,L]
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteCond %{SERVER_PORT} !^443
RewriteRule ^(.*)$ http://example.com/$1 [L, R=301]
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteCond %{SERVER_PORT} ^443
RewriteRule ^(.*)$ https://example.com/$1 [L, R=301]