Помогите с Mod_Rewrite

Активист

Активист
Команда форума
Помогите с Mod_Rewrite

Помогите найти ошибку.

Было - ЧПУ+редирект на один основной домен (куча алиасов для сайта)
Код:
RewriteEngine ON

# В случае если пришел не на оснвной домен - редиректим (301) на основной
RewriteCond     %{HTTP_HOST} !^www\.main-domain\.ru$ [NC]
RewriteRule     (.*) [url]http://www.main-domain.ru/[/url]$1 [R=301,L]

# ЧПУ
RewriteCond     %{REQUEST_FILENAME}     !-f
RewriteCond     %{REQUEST_FILENAME}     !-d
RewriteRule ^(.*)$ index.php?$1 [L,QSA]
Теперь мне нужно отдать для некоторых алиасов robots.txt обработанный через ЧПУ, т.е. отключить правило RewriteRule (.*) http://www.main-domain.ru/$1 [R=301,L],
делаю следующее:
Код:
RewriteEngine ON

RewriteCond     %{HTTP_HOST} !^www\.main-domain\.ru$ [NC]
RewriteCond     %{REQUEST_URI} !^/robots\.txt$ [NC]
RewriteRule     (.*) [url]http://www.main-domain.ru/[/url]$1 [R=301,L]

RewriteCond     %{REQUEST_FILENAME}     !-f
RewriteCond     %{REQUEST_FILENAME}     !-d
RewriteRule ^(.*)$ index.php?$1 [L,QSA]
Когда делаю это правило, почему-то редиректит на http://www.main-domain.ru/index.php?robots.txt

В чем ошибка?
 

zerkms

TDD infected
Команда форума
потому что первое правило не сработало.
второе - сработало и переписало урл.
а на второй итерации первое правило уже срабатывает, т.к.
урл http://www.main-domain.ru/index.php?robots.txt и для него %{REQUEST_URI} равно index.php?robots.txt

UPD: http://habrahabr.ru/blogs/webdev/75885/
вот таким вот костылём можно разрулить эту проблему
 

Активист

Активист
Команда форума
А зачем ему вторая интерация)) По идее - как файрвол - нашел правило, совпало, сделал (думал всегде что реврайт работает аналогично)? По статье с хабра понятно)) Решил проблему добавлением еще одного RewriteCond (решение на хабре как-то кривовато)

Код:
RewriteCond     %{HTTP_HOST} !^www\.main-domain\.ru$ [NC]
RewriteCond     %{REQUEST_URI} !^/robots\.txt$ [NC]
RewriteCond     %{QUERY_STRING} !^robots\.txt$ [NC]
RewriteRule     (.*) [url]http://www.main-domain.ru/[/url]$1 [R=301,L]
Кому интересно. Эти правила позволяют предотвратить деление тИЦ и по большей части PR сайта, а свой robots.txt для алиасов (с директивой Host) - позволяет зеркальщикам склеить домены, тем самым ни тИЦ ни PR не пострадает, а главное, в интернете не будет таких-же сайтов, тем самым решается проблема уникальности контента.
 
Сверху