WordPress htaccess配置https跳转及rvplayer排除出现重定向循环求助
WordPress .htaccess重定向循环问题解决方案
问题根源
- 原有配置仅通过
SERVER_PORT判断访问协议,若站点使用CDN、反向代理(如Nginx前置、Cloudflare),Apache侧拿到的访问端口始终为80,会反复触发https跳转规则形成循环 - 未对www/非www域名做统一规范,多域名形态交叉匹配规则触发循环
- 未兼容反向代理场景下的协议判断参数
X-Forwarded-Proto
修正后的完整配置
RewriteEngine On # 可选:强制www前缀跳转为非www,若需保留www可替换为下方注释内的规则 RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ https://%1/$1 [L,R=301] # 若需保留www前缀,使用下方规则替换上述www跳转规则 # RewriteCond %{HTTP_HOST} !^www\. [NC] # RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [L,R=301] # 非rvplayer路径的HTTP请求统一跳转HTTPS RewriteCond %{HTTPS} off [OR] RewriteCond %{HTTP:X-Forwarded-Proto} !https [NC] RewriteCond %{THE_REQUEST} !/rvplayer/ [NC] RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # rvplayer路径的HTTPS请求统一跳转HTTP RewriteCond %{HTTPS} on [OR] RewriteCond %{HTTP:X-Forwarded-Proto} =https [NC] RewriteCond %{THE_REQUEST} /rvplayer/ [NC] RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # WordPress默认重定向规则 RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L]
生效注意事项
- 修改配置后需清空浏览器缓存、站点CDN缓存,301重定向会被浏览器长期缓存,未清缓存可能仍显示旧的循环结果
- 确认WordPress后台「设置」-「常规」内的
站点地址(URL)和WordPress地址(URL)与你要使用的主域名(带/不带www、对应协议)完全一致,避免WP自带的重定向规则和.htaccess规则冲突
内容的提问来源于stack exchange,提问作者Nick
相关产品推荐
相关产品推荐

