htaccess 文件在 Chrome 和 IE 上可用,但在 Firefox 上却不行

htaccess 文件在 Chrome 和 IE 上可用,但在 Firefox 上却不行

我尝试使用 .htaccess 文件将 http:// 重定向到 https://
我还尝试在域名前面附加 www.(如果没有写)。
我在 .htaccess 文件中使用了此代码

选项 +FollowSymLinks
重写引擎开启
重写库 /
期权-指数

# 强制使用 https 进行安全连接
#(与您的 SSL 证书上显示的一样)
重写条件 %{SERVER_PORT} 80
重写规则 ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]

# 强制在域名前使用 www
重写条件 %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS} 关闭
重写规则 ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]

在 Chrome 和 IE 中,网站按预期打开,
总是跳转到https://www.domain.com,无论输入的地址是“www.domain.com”还是“domain.com”,但在 Firefox 中,只有当地址为“domain.com”时,它才能正常工作当
我输入“www.domain.com”时,Firefox 浏览器会将其变成
https://www.www.domain.com
抱歉,我实在想不出其中的逻辑,为什么 Chrome 和 IE 可以很好地解释 .htaccess,而 Firefox 只能解释一半。Firefox 是 41.0.2,缓存为空,没有变化。我猜不出原因,有人能提出解决方案吗?

答案1

感谢 Tyson,现在我有一个可以正常工作的 .htaccess 文件。
以下是可以正常工作的代码。将 domain.com 更改为您的域名。

选项 +FollowSymLinks
重写引擎开启
重写库 /
期权-指数

# 始终在域名中使用 www
RewriteCond %{HTTP_HOST} ^([az.]+)?domain\.com$ [NC]
RewriteCond %{HTTP_HOST} !^www\. [NC]
重写规则 .?http://www.%1domain.com%{REQUEST_URI} [R=301,L]

# 检查是否未使用HTTPS,则跳转到HTTPS
重写条件 %{SERVER_PORT} !^443$
重写规则 ^(.*)$ https://www.domain.com/$1 [NC,R=301,L]

# 重定向尾部斜杠...
重写规则 ^(.*)/$ /$1 [L,R=301]

# 处理前端控制器...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
重写规则 ^ index.php [L]

相关内容