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

htaccess重写规则:无查询串跳转/reset带查询串放行配置

htaccess重写规则调整方案

需求说明

当前已配置的htaccess规则会在访问路径不符合预设放行条件时,重定向至/login路径,目前无查询字符串的URL处理逻辑正常。现需要调整规则:

  • 携带查询字符串的/reset路径(例:/reset?6tdsBMxpeeJEDUvYzwKmLzIusLYLjgMtIj)加入放行列表,不触发跳转
  • 不带查询字符串的/reset路径仍然保持原有拦截跳转逻辑

原有规则问题

原有放行逻辑仅通过REQUEST_URI判断路径,没有结合查询字符串(QUERY_STRING)状态做判定,无法区分带参和不带参的/reset路径。另外原规则中RewriteBase /index.php属于错误配置,RewriteBase仅用于设置重写的基准路径,不需要填写入口文件名。

修正后完整规则

RewriteEngine On
# 修正RewriteBase为站点根路径,若站点部署在子目录请对应修改
RewriteBase /

# 放行/login路径
RewriteCond %{REQUEST_URI} !^/login$
# 放行/forgotten路径
RewriteCond %{REQUEST_URI} !^/forgotten$
# /reset路径判定:要么请求不是/reset,要么是/reset但无查询字符串,满足任意一条才进入跳转逻辑
RewriteCond %{REQUEST_URI} !^/reset$ [OR]
RewriteCond %{QUERY_STRING} ^$

RewriteRule ^([^\.]+)$ /login [R=301,L,QSD]
RewriteRule ^(/)?$ /login [R=301,L]
RewriteRule ^([^\.]+)$ $1.php [NC,L]

规则逻辑说明

新增的两条判定条件实现了/reset路径的差异化处理:

  • 第一条带[OR]标记的条件:判断请求路径不是/reset,如果条件成立,直接通过判定,进入后续跳转逻辑
  • 第二条条件仅在请求路径是/reset时触发:如果查询字符串为空,判定成立,触发跳转至/login;如果查询字符串不为空,判定不成立,整个条件组不匹配,不会触发跳转,直接走后续的PHP文件解析逻辑,实现带参/reset路径的放行。

测试注意事项

301重定向会被浏览器本地强缓存,修改规则后请先清除浏览器缓存再做测试,避免旧缓存规则干扰结果判定。


内容的提问来源于stack exchange,提问作者DataConnect

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 00:24:25