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

Apache mod_rewrite反向引用%1匹配失败及trace4是否应展开该引用的问题咨询

Apache mod_rewrite反向引用%1匹配失败及trace4是否应展开该引用的问题咨询

大家好,我最近在折腾Apache的mod_rewrite规则,想要实现的逻辑是判断HTTP_HOST的值是否是REQUEST_URI的一部分,但遇到了匹配失败的问题,想问问各位大佬:

我是这么写规则的:

  1. 先把HTTP_HOST的值捕获到反向引用里:
    RewriteCond "%{HTTP_HOST}"    "(.+)"
    
  2. 接着用这个反向引用来检测它是否存在于REQUEST_URI中:
    RewriteCond "%{REQUEST_URI}"  "/foo/%1/bar"
    
  3. 如果第二个条件匹配成功,就执行重写去掉这个捕获到的值:
    RewriteRule "^foo/(.+)/(.+)$" "foo/$2" [L]
    

但实际测试的时候,当访问的URI是 http://foo/localhost/bar,第二个RewriteCond始终匹配失败。我看了rewrite的trace日志,内容是这样的:

applying pattern '^foo/(.+)/(.+)$' to uri 'foo/localhost/bar'
RewriteCond: input='localhost' pattern='(.+)' => matched
RewriteCond: input='/foo/localhost/bar' pattern='/foo/%1/bar' => not-matched

现在我有两个疑问:

  • 为什么这个%1反向引用匹配不上呢?明明第一个条件已经捕获到了值啊
  • rewrite:trace4应该在第二个RewriteCond里展开这个%1吗?还是说trace日志里不会显示展开后的内容?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 11:58:10