RewriteCond变量反向引用%2

时间:2012-03-09 16:38:05

标签: mod-rewrite

这是服务器上的htaccess文件

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP_HOST} !^www.
RewriteCond %{HTTP_HOST} ^([a-z0-9]+)\.domain.com(.*)$
RewriteRule ^(.*)$ http://domain.com/test\.php?user=%1&path=%2 [R]

根据我对上述代码的理解,如果我要求 asher.domain.com/user ,则应重写为 http://domain.com/test.php?user=asher& ; path = / user 对吧?

相反,我得 http://domain.com/test.php?user=asher&path= %2 为空。但如果我使用 $ 1 而不是%2 ,我似乎得到了正确的结果。

我可能会犯下最愚蠢的错误,但我不确定我的错误在哪里。帮我在这里伙计们?重写规则中的错误在哪里,%2对我不起作用?

1 个答案:

答案 0 :(得分:3)

使用$语法为您提供RewriteRule反向引用,而%将为您提供RewriteCond反向引用。 mod_rewrite文档涵盖了这一点。

在您的情况下,您的RewriteRule应如下所示:

RewriteRule ^(.*)$ http://domain.com/test\.php?user=%1&path=$1 [R]

因为您希望来自上一个RewriteCond的第一个组匹配和来自当前RewriteRule的第一个组匹配。