parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Apache какой версии?

dev 24.11.2006 10:33

Возможно, что дома у вас 1.3, а на хостинге 2.x

В этом случае, может быть так: вместо вашего скрипта RewriteRule отрабатывает ошибку, например 403 или 404.

Как такое происходит?

Один из часто встречающихся примеров: серверу запрещено отображать содержимое директорий (index).

Делаем запрос: www.you-server.com/any-dir/.
Директория any-dir существует, но она пуста (что и сбивает с толку разработчика).

Вы ожидаете, что с помощью RewriteRule будет сделан редирект на ваш скрипт с сохранением всех переменных окружения и т.д.

Но этого не происходит.
Веб-сервер в результате подзапроса выдает страницу с кодом ошибки – "403 доступ запрещен ", что совершенно верно: нельзя отображать содержимое директорий.

Выдача этой страницы (например, error403.html) реализуется в форме подзапроса /error403.html. К нему применяется RewriteRule и делает редирект на ваш скрипт.
Редирект этот происходит не с вызываемого адреса /any-dir/, а с /error403.html.[!]

Увидев результаты выполнения скрипта, вы полагаете, что правило RewriteRule отработалось именно так, как вами было задумано. Просто куда-то "исчезли" переменные.

И вместо того, чтобы смотреть в error.log вы начинаете мучить RewriteMod.

Возможное решение проблемы в приведенном примере:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}index.html !-f
RewriteRule _ваше_преобразование_ [QSA,L]

Поэтому рекомендую внимательно изучить error.log и изучить свои запросы.
Если это не поможет - настройте и читайте rewrite.log.