我尝试使用 .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]