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.