Apache mod_rewrite反向引用%1匹配失败及trace4是否应展开该引用的问题咨询
Apache mod_rewrite反向引用%1匹配失败及trace4是否应展开该引用的问题咨询
大家好,我最近在折腾Apache的mod_rewrite规则,想要实现的逻辑是判断HTTP_HOST的值是否是REQUEST_URI的一部分,但遇到了匹配失败的问题,想问问各位大佬:
我是这么写规则的:
- 先把HTTP_HOST的值捕获到反向引用里:
RewriteCond "%{HTTP_HOST}" "(.+)" - 接着用这个反向引用来检测它是否存在于REQUEST_URI中:
RewriteCond "%{REQUEST_URI}" "/foo/%1/bar" - 如果第二个条件匹配成功,就执行重写去掉这个捕获到的值:
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
相关产品推荐
相关产品推荐

