Mod rewrite 重写%2的第二个变量反向引用

Mod rewrite 重写%2的第二个变量反向引用,mod-rewrite,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它应

这是服务器上的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对我不起作用的错误在哪里?

使用
$
语法将为您提供
重写规则
反向引用,而
%
将为您提供
重写条件
反向引用。文件包括了这一点

在您的情况下,您的
重写规则应该如下所示:

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

因为您需要上一个
RewriteCond
中的第一组匹配和当前
RewriteRule
中的第一组匹配。我希望第二个“重写条件”中的“(*)”与%2匹配。这里不是这样吗?是的,但是
${HTTP\u HOST}
中的任何内容都不会通过
.com
。它只是主机名,不包含请求URI。