我在这个页面.htaccess - how to force "www." in a generic way?开始阅读类似的主题并且解决方案不是,几乎就是我想要做的。
问题:我需要用户使用HTTPS和WWW才能使我的应用程序正常运行。但如果有人点击一个html链接,如:
<a href="https://www.example.com">www.example.com</a>
用户将使用以下内容登录我的网站:
https://www.www.example.com/
这是我当前的.htaccess文件。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://www.%{SERVER_NAME}/$1 [R=301,L]
</IfModule>
有没有办法检测用户是否已进入WWW,或者是否有最佳做法可以获得我想要的结果?
谢谢。
答案 0 :(得分:3)
您收到此行为是因为http -> https
规则正在目标网址中添加www\.
,而不检查网址是否已经以www
开头。
您应该使用此单一规则替换两个规则,并作为奖励避免多重重定向:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC,OR]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [R=301,L,NE]