检测到Opera浏览器时重定向全站URL的.htaccess配置问题
解决Opera浏览器UA检测下的全站重定向循环问题
当检测到Opera浏览器(UA包含OPR标识)时,需要实现全站URL重定向,但现有规则存在两个问题:
- 初始规则仅对首页(
https://example.com/)生效,其他子页面无法触发重定向 - 修改正则为
^(.*)$或^(.*)后,虽能全站触发重定向,但出现页面未正确重定向的循环错误
有效解决方案
核心是添加规则排除目标重定向路径,避免无限循环,完整.htaccess规则如下:
RewriteEngine On # 匹配Opera浏览器UA,且排除目标路径避免循环 RewriteCond %{HTTP_USER_AGENT} OPR [NC] RewriteCond %{REQUEST_URI} !^/sub1/ [NC] RewriteRule ^(.*)$ https://example.com/sub1/ [L,R=301]
原理说明
之前出现循环的原因是:用户被重定向到/sub1/后,Opera的UA标识依然存在,规则会再次匹配这个路径并发起重定向,形成无限循环。添加的第二个RewriteCond会判断当前请求路径不是/sub1/开头时才触发重定向,彻底解决循环问题。
如果你的目标重定向路径不是/sub1/,只需将!^/sub1/替换为对应的路径正则即可,[NC]标记确保匹配不区分大小写。
内容的提问来源于stack exchange,提问作者Goemon Code
相关产品推荐
相关产品推荐

