Mod rewrite 重写%2的第二个变量反向引用
这是服务器上的htaccess文件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它应
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。