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

.htaccess RewriteRule中含字母'd'的路径触发404问题求助

解决.htaccess RewriteRule含'd'字符触发404的问题

嘿,我太懂这种正则踩坑的感觉了——字符集的写法一不小心就会搞反意思!

你猜对了,问题确实出在([^/d]+)这个正则片段上:

  • [^...]是否定字符集,意思是「匹配除了括号里列出的所有字符之外的任意字符」
  • 你写的[^/d],其实是把「斜杠/」和「字母d」都加入了排除列表,所以只要搜索变量里包含d,这条规则就匹配不上,服务器就会走默认路由返回404了

正确的规则写法

如果你想允许第一个搜索变量是除了斜杠之外的任意字符(包含字母d、数字、符号等),只需要把否定字符集里的d去掉,写成[^/]+即可:

RewriteRule ^/?Search/([^/]+)/([^/]+)/?$ Search.html?searchvariable=$1&searchnumber=$2 [L,QSA]

更严谨的优化(可选)

如果第二个参数searchnumber确实是纯数字的话,你可以把第二个捕获组改成\d+(匹配1个或多个数字),这样能避免非数字的参数进入,规则更精准:

RewriteRule ^/?Search/([^/]+)/(\d+)/?$ Search.html?searchvariable=$1&searchnumber=$2 [L,QSA]

修改后再访问http://example.com/Search/doo/12这类含d的地址,就能正常匹配到搜索页面啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:44:14