You need to enable JavaScript to run this app. httpd .htaccess重写规则异常 带日期路径错误跳转index而非list
优惠活动
大模型
产品
解决方案
定价
更多

httpd .htaccess重写规则异常 带日期路径错误跳转index而非list

问题根因

你遇到的问题核心是重写规则的正则缺少字符串结束锚点$。Apache的mod_rewrite模块按从上到下的顺序执行规则,命中带L(最后一条)标记的规则后就会终止后续匹配,没有结束锚点的短规则会提前拦截前缀匹配的长路径:

  • v2版本把index规则放在前面,无锚点的index正则^m/([a-zA-Z0-9]+)/?会匹配带日期路径的前缀/m/blas3as/,直接终止后续list规则的匹配,因此带日期的路径错误跳转到index
  • 即使是v1版本把list规则放在前面,无锚点的正则也存在潜在的路径匹配风险
    重复书写RewriteEngine On不是核心问题,但属于冗余写法,全局声明一次即可。
修复后的正确配置
RewriteEngine On
# 带日期的路径规则,优先匹配
RewriteRule ^m/([a-zA-Z0-9]+)/(\d{4}-\d{2}-\d{2})/?$ m/list.php?list_id=$1&date=$2 [QSA,L]
# 无日期的路径规则,后序匹配
RewriteRule ^m/([a-zA-Z0-9]+)/?$ m/index.php?list_id=$1 [QSA,L]
规则说明
  • 首尾锚点^和$限定正则必须匹配完整的请求路径,彻底避免前缀误匹配问题
  • 逻辑更复杂的带日期规则放在靠前位置,命中后通过L标记终止后续匹配,不会执行多余规则
  • 原有QSA标记保留,可自动将原请求携带的查询参数附加到重写后的地址,兼容原有业务逻辑

修改后两个测试URL均可正常匹配对应规则:

  1. http://www.example.com/m/blas3as 匹配第二条规则,跳转至index.php
  2. http://www.example.com/m/blas3as/2021-01-01 匹配第一条规则,跳转至list.php

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 07:24:03