You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.htaccess移动端重定向触发无限循环,求解决方案

解决移动端重定向无限循环问题

嘿,我来帮你搞定这个无限循环的坑!

问题原因

你的重定向规则没有排除已经跳转到mobile.html的请求——当移动端用户第一次被重定向到mobile.html后,这个新请求依然满足两个触发条件:

  • 没有desktop查询参数
  • 请求来自移动端UA
    所以规则会反复触发,导致URL里不断叠加mobile.html,形成无限循环。

修正后的代码

我帮你调整了规则,添加了排除目标页面的条件,同时去掉了重复的配置项,还修正了URL里多余的斜杠:

RewriteEngine On
# 排除带有desktop参数的请求(支持用户切换回桌面版)
RewriteCond %{QUERY_STRING} !^desktop
# 排除已经是mobile.html的请求,终止循环
RewriteCond %{REQUEST_URI} !^/mobile.html
# 匹配移动端用户代理
RewriteCond %{HTTP_USER_AGENT} "android|blackberry|googlebot-mobile|iemobile|iphone|ipod|opera mobile|palmos|webos" [NC]
# 重定向到移动端页面,修正了多余的斜杠
RewriteRule ^ http://logo.artliner.co.il/mobile.html%{REQUEST_URI} [R,L]

关键说明

  • RewriteCond %{REQUEST_URI} !^/mobile.html:这个条件是核心,它告诉服务器「如果当前请求的路径不是以/mobile.html开头,才执行重定向」,彻底避免了对移动端页面本身的重复跳转。
  • 去掉了代码里重复的RewriteEngine On(配置一次就足够生效),还把//mobile.html改成/mobile.html,让URL更规范。
  • 保留了%{REQUEST_URI},这样用户原来访问的路径会被附加到mobile.html后面,方便移动端页面处理不同的请求内容。

额外优化建议

如果需要明确指定重定向类型,可以把[R,L]改成[R=302,L](临时重定向,默认就是302,明确写出来更清晰);如果以后确定移动端页面是永久的,可以换成[R=301,L](永久重定向)。

内容的提问来源于stack exchange,提问作者חיים בניסטי

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:02:18