Как отлаживать.откройте файл. htaccess RewriteRule не работает
у меня есть RewriteRule
на .htaccess
файл, который ничего не делает. Как я могу устранить это?
- как я могу проверить, если
.htaccess
файл даже читается и подчиняется Apache? Могу ли я написать Эхо-сообщение "это работает", если я его напишу, где эта строка будет отражена? - если
.htaccess
файл не используется, как я могу заставить Apache использовать его? - если
.htaccess
используется, но мойRewriteRule
все еще не оказывает эффекта, что еще могу ли я сделать отладку?
7 ответов
введите некоторые ненужные значения в ваш .htaccess
например,foo bar
, sakjnaskljdnas
любое ключевое слово, не распознанное htaccess
и посетите свой URL. Если это работает, вы должны получить
500 Внутренняя Ошибка Сервера
Внутренняя Ошибка Сервера
сервер обнаружил внутреннюю ошибку или неправильной настройки и не смог выполнить ваш запрос....
я предлагаю вам положить его вскоре после RewriteEngine on
.
так как вы находитесь на вашей машине. Я полагаю, у вас есть доступ к apache .
открыть .conf
file, и найдите строку, похожую на:
LoadModule rewrite_module modules/mod_rewrite.so
если он прокомментирован (#), раскомментируйте и перезапустите apache.
переписать журнал
RewriteEngine On
RewriteLog "/path/to/rewrite.log"
RewriteLogLevel 9
поставить выше 3 строки в свой virtualhost
. перезапустите httpd.
RewriteLogLevel 9
использование высокого значения для уровня замедлит ваш Apache сервер драматически! Используйте файл журнала перезаписи на уровне больше 2 только для отладки!
Уровень 9 будет регистрировать почти каждую деталь rewritelog.
обновление
в Apache 2.4 все изменилось:
на RewriteLog и RewriteLogLevel директивы были удалены. Эта функциональность теперь обеспечивается путем настройки соответствующего уровень ведения журнала для модуля mod_rewrite с помощью LogLevel. См. также раздел лесозаготовки и mod_rewrite.
подробнее о LogLevel см. Директива LogLevel
можно сделать
RewriteLog "/path/to/rewrite.log"
таким образом, теперь
LogLevel debug rewrite_module:debug
ответ "Enter some junk value" не сделал трюк для меня, мой сайт продолжал загружаться, несмотря на введенный мусор.
вместо этого я добавил следующую строку в верхнюю часть .файл htaccess:
deny from all
это быстро даст вам знать, если .htaccess подбирается или нет. Если.htaccess используется, файлы в этой папке не будут загружаться вообще.
вообще любое изменение .htaccess должен иметь видимые эффекты. Если нет эффекта, проверьте файлы конфигурации apache, что-то вроде:
<Directory ..>
...
AllowOverride None
...
</Directory>
следует заменить на
AllowOverride All
и вы сможете изменить директивы .htaccess файлы.
возможно, более логичным методом было бы создать файл (например, test.html), добавьте некоторое содержимое, а затем попробуйте установить его в качестве страницы индекса:
DirectoryIndex test.html
по большей части, the .правило htaccess переопределит конфигурацию Apache, где работает на уровне каталога / файла
если у вас есть доступ к каталогу apache bin, который вы можете использовать,
httpd -M
чтобы проверить загруженные модули.
info_module (shared) isapi_module (shared) log_config_module (shared) cache_disk_module (shared) mime_module (shared) negotiation_module (shared) proxy_module (shared) proxy_ajp_module (shared) rewrite_module (shared) setenvif_module (shared) socache_shmcb_module (shared) ssl_module (shared) status_module (shared) version_module (shared) php5_module (shared)
после этого простые директивы, такие как Options -Indexes
или deny from all
будет затвердевать, что .htaccess работают правильно.
чтобы проверить правила перезаписи htaccess, просто заполните url-адрес, к которому вы применяете правила, поместите содержимое htaccess в большую область ввода и нажмите кнопку "Тест".
Почему бы не положить какой-то мусор в вашем .htaccess файл и попробуйте перезагрузить apache. Если apache не запускается, вы знаете его работу. Удалите мусор, а затем перезагрузите apache, если он загружает поздравления, которые вы настроили .правильно реврайт.