Обратная ссылка на переменную RewriteCond% 2 - PullRequest
4 голосов
/ 09 марта 2012

это файл 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 Ответ

3 голосов
/ 09 марта 2012

Использование синтаксиса $ дает вам RewriteRule обратных ссылок, тогда как % даст вам RewriteCond обратных ссылок. Документация mod_rewrite охватывает это.

В вашем случае ваш RewriteRule должен выглядеть так:

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

Поскольку вы хотите, чтобы первое совпадение группы было получено из предыдущего RewriteCond, а первое совпадение группы - из текущего RewriteRule.

...