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

Apache2 mod_rewrite规则匹配失败求助

Apache2 mod_rewrite规则匹配失败求助

兄弟,我仔细看了你的RewriteTrace日志和当前的规则,马上就找到问题根源了!

先看日志里的关键行:

[perdir /var/www/192.168.178.29/] applying pattern '^/wiki-search/(.+)$' to uri 'wiki-search/john'

看到没?Apache在处理目录级(per-directory)的Rewrite规则时,会自动去掉请求的目录前缀,所以传入规则匹配的URI是没有开头斜杠的——你这里要匹配的URI是wiki-search/john,但你的规则写的是^/wiki-search/(.+)$,开头多了个/,自然匹配不上!

修正后的规则

把你的RewriteRule改成下面这样就行:

RewriteCond %{REQUEST_METHOD} ^(GET)$
RewriteRule ^wiki-search/(.+)$ NicerAppWebOS/index.php?app-wikipedia.org-search=$1 [L,END,PT,DPI]

或者如果想兼容可能的边缘场景(比如某些特殊配置下可能带斜杠),可以写成:

RewriteCond %{REQUEST_METHOD} ^(GET)$
RewriteRule ^/?wiki-search/(.+)$ NicerAppWebOS/index.php?app-wikipedia.org-search=$1 [L,END,PT,DPI]

这里的^/?表示开头可以有0个或1个斜杠,保证两种情况都能匹配。

再给你理一遍日志里的逻辑

Apache处理请求时的步骤:

  1. 给路径添加信息后缀:/var/www/192.168.178.29/wiki-search → /var/www/192.168.178.29/wiki-search/john
  2. 去掉目录前缀:/var/www/192.168.178.29/wiki-search/john → wiki-search/john
  3. 用你的规则^/wiki-search/(.+)$去匹配wiki-search/john,因为开头没有斜杠,匹配失败

最后提醒

修改完规则后,记得执行systemctl reload apache2重新加载配置,再测试你的搜索功能应该就能正常工作了!

备注:内容来源于stack exchange,提问作者NicerApp_WebOS

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 15:04:35