Кто-то, с кем я работаю, передал в SVN RewriteRule, например следующее:
RewriteRule ^admin/ebay.*$ /yii.php/$1 [L]
Я предупредил его, что это может не сработать, потому что в совпадении нет подгруппы, которая соответствовала бы обратной ссылке на $ 1. Это действительно работает, и я озадачен. Я почти уверен, что он имел в виду одно из следующего:
RewriteRule ^admin/ebay.*$ /yii.php/$0 [L] # $0 is whole match
...или...
RewriteRule ^admin/ebay(.*)$ /yii.php/$1 [L] # $1 subgroup
Делает ли Apache предположение о обратных ссылках, о которых я никогда не знал? Почему его RewriteRule (верхнее) работает?
Как оказалось, $1
действительно не делать что-нибудь здесь. Следующее работает так же:
RewriteRule ^admin/ebay.*$ /yii.php [L]
(Обратите внимание, что в части перезаписи вообще нет обратной ссылки.)
Это работает, потому что Yii смотрит на $_SERVER['REQUEST_URI']
чтобы выяснить, что задумал пользователь. Фактически, Apache просто проходил пустым для $1
обратная ссылка, как и ожидалось.
Так что здесь нет ошибки сервера. :)
Попробуйте установить RewriteLog и RewriteLogLevel. Журнал может дать вам подсказку о том, откуда взялось это значение.