这是服务器上的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对我不起作用?
答案 0 :(得分:3)
使用$
语法为您提供RewriteRule
反向引用,而%
将为您提供RewriteCond
反向引用。 mod_rewrite
文档涵盖了这一点。
在您的情况下,您的RewriteRule
应如下所示:
RewriteRule ^(.*)$ http://domain.com/test\.php?user=%1&path=$1 [R]
因为您希望来自上一个RewriteCond
的第一个组匹配和来自当前RewriteRule
的第一个组匹配。