网站index.php应重定向至HTTP还是HTTPS?.htaccess配置疑问
问题分析与解决方案
核心问题
你提到的这行规则完全错误:
RewriteRule ^index\.php$ "http\:\/\/www\.mywebsite\.com\/" [R=301,L]
它强制将index.php请求重定向到HTTP版本,和你全站HTTPS的需求直接冲突,这就是导致问题的根源。
为什么会引发问题?
当用户访问https://www.mywebsite.com/index.php时,这行规则会把请求跳转到http://www.mywebsite.com/,紧接着下面的HTTPS强制规则又会把HTTP请求重定向回HTTPS,形成循环重定向。日志里的大量302状态码,正是服务器或浏览器处理这种循环时返回的临时状态(避免无限循环)。
另外,原规则里的第二个RewriteRule缺少[L]标记,会导致规则处理逻辑混乱,进一步加重重定向循环的概率。
修正方案
- 调整规则顺序:将
RewriteEngine On移到最顶部,确保重写引擎先启用(虽然原顺序能生效,但这是规范写法)。 - 修正重定向协议:把
index.php的重定向目标改成HTTPS版本,去掉不必要的转义字符(.htaccess中无需转义://)。 - 补充必要标记:给第二个HTTPS强制规则加上
[L],确保处理完后停止后续规则。
修改后的完整.htaccess示例:
# Do not remove this line, otherwise mod_rewrite rules will stop working RewriteEngine On RewriteBase / # 修正index.php重定向为HTTPS,统一到www根目录 RewriteCond %{HTTP_HOST} ^mywebsite\.com$ [OR] RewriteCond %{HTTP_HOST} ^www\.mywebsite\.com$ RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/[0-9a-zA-Z_-]+$ RewriteCond %{REQUEST_URI} !^/\.well-known/cpanel-dcv/[0-9a-zA-Z_-]+$ RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$ RewriteRule ^index\.php$ https://www.mywebsite.com/ [R=301,L] # 强制全站HTTPS跳转 RewriteCond %{HTTPS} off RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/[0-9a-zA-Z_-]+$ RewriteCond %{REQUEST_URI} !^/\.well-known/cpanel-dcv/[0-9a-zA-Z_-]+$ RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$ RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
额外注意事项
- 测试阶段可以把
R=301改成R=302,避免浏览器缓存错误的重定向规则,确认正常后再改回301(永久重定向更利于SEO)。 - 修改后务必清除浏览器缓存再测试,或者用隐私窗口访问,避免旧缓存影响结果。
内容的提问来源于stack exchange,提问作者Regis
相关产品推荐
相关产品推荐

