Странное поведение mod_rewrite
Директива RewriteBase устанавливает конкретный, базовый URL для преобразований в контексте каталога. Как вы увидите ниже, RewriteRule может быть использовано в конфигурационных файлах каталогов (.htaccess). Это будет работать локально, т.е., префикс локального каталога отбрасывается на этом этапе обработки и ваши правила преобразований работают только в оставшейся части. В конце он автоматически добавляется обратно к пути. Настройка по-умолчанию; RewriteBase physical-directory-path.
http://www.egoroff.spb.ru/portfolio/apache/mod_rewrite.html#...
сравни:
В конфигурационных файлах контекста сервера (httpd.conf) для запроса вида «GET /somepath/pathinfo»:
но:
Внутри конфигурационного файла каталога, для /somepath (т.е., файл .htaccess в каталоге /physical/path/to/somepath содержит RewriteBase /somepath) для запроса «GET /somepath/localpath/pathinfo»:
http://www.egoroff.spb.ru/portfolio/apache/mod_rewrite.html#...
сравни:
В конфигурационных файлах контекста сервера (httpd.conf) для запроса вида «GET /somepath/pathinfo»:
^/somepath(.*) /otherpath$1 -> /otherpath/pathinfo
но:
Внутри конфигурационного файла каталога, для /somepath (т.е., файл .htaccess в каталоге /physical/path/to/somepath содержит RewriteBase /somepath) для запроса «GET /somepath/localpath/pathinfo»:
^localpath(.*) otherpath$1 -> /somepath/otherpath/pathinfo
ну это, разумеется, если ты в .htaccess правила писал.
вообще, такие ошибки хорошо исправляются чтением логов.
вообще, такие ошибки хорошо исправляются чтением логов.
Мдя, спасибо.
Оставить комментарий
sinet
Почему не работает:RewriteCond %{REQUEST_URI} ^/test
RewriteRule ^/test/(.*) /test.php?redir=$1\%3F%{QUERY_STRING} [L]
зато работает:
RewriteCond %{REQUEST_URI} ^/test
RewriteRule ^test/(.*) /test.php?redir=$1\%3F%{QUERY_STRING} [L]
?
Я плохо курил man или это реально баг?
Apache 2.2.3, ось Solaris 10