[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

настройка mod_rewrite



Приветсвую!
В настройках виртульного хоста прописано:
RewriteEngine On
RewriteRule ^/print/([a-z]+)/?$ /print.php?to=$1 [L]
RewriteRule ^/print/([a-z]+)/(int|ext)/?$ /print.php?to=$1&q=$2 [L]
RewriteRule ^/([a-z]+)/?$ /index.php?to=$1 [L]
RewriteRule ^/([a-z]+)/(([a-z]|[0-9])+)/?$ /index.php?to=$1&q=$2 [L]

Если я хожу по ссылка site.ru/news или site.ru/search, назовем их однокомпонентными, все хорошо. Стоит мне перейти по двукомпонентной ссылке, site.ru/mail/int, так сразу все ссылки получают префикс. Трансформируются из site.ru/news в site.ru/mail/news.

В логах следующее:
127.0.0.1 - - [11/Jul/2009:20:14:48 +0400] [office.company.ru/sid#86b5d70][rid#8f9a2a0/initial] (2) rewrite '/mail/int' -> '/index.php?to=mail&q=int'
127.0.0.1 - - [11/Jul/2009:20:14:48 +0400] [office.company.ru/sid#86b5d70][rid#8f9a2a0/initial] (3) split uri=/index.php?to=mail&q=int -> uri=/index.php, args=to=mail&q=int
127.0.0.1 - - [11/Jul/2009:20:14:48 +0400] [office.company.ru/sid#86b5d70][rid#8f9a2a0/initial] (2) local path result: /index.php
127.0.0.1 - - [11/Jul/2009:20:14:48 +0400] [office.company.ru/sid#86b5d70][rid#8f9a2a0/initial] (2) prefixed with document_root to /var/www/office/index.php
127.0.0.1 - - [11/Jul/2009:20:14:48 +0400] [office.company.ru/sid#86b5d70][rid#8f9a2a0/initial] (1) go-ahead with /var/www/office/index.php [OK]
127.0.0.1 - - [11/Jul/2009:20:14:51 +0400] [office.company.ru/sid#86b5d70][rid#8f96290/initial] (2) init rewrite engine with requested uri /mail/search
                                                                                                                                       ^^^^^^^^^^^^^^^^^       
127.0.0.1 - - [11/Jul/2009:20:14:51 +0400] [office.company.ru/sid#86b5d70][rid#8f96290/initial] (3) applying pattern '^/print/([a-z]+)/?$' to uri '/mail/search'
127.0.0.1 - - [11/Jul/2009:20:14:51 +0400] [office.company.ru/sid#86b5d70][rid#8f96290/initial] (3) applying pattern '^/print/([a-z]+)/(int|ext)/?$' to uri '/mail/search'

Если модифицировать правило установкой флага R, RewriteRule ^/([a-z]+)/(([a-z]|[0-9])+)/?$ /index.php?to=$1&q=$2 [L,R], то "эффект префикса" пропадает и все работает как надо. Но, что естественно, видна строка запроса.

Почему это происходит и как с этим бороться?
Спасибо.


Reply to: