Как отлаживать.htaccess RewriteRule не работает
у меня есть RewriteRule на .htaccess файл, который ничего не делает. Как я могу устранить эту проблему?
- как я могу проверить, если
.htaccessфайл даже читается и подчиняется Apache? Могу ли я написать Эхо-сообщение "это работает", если я его напишу, где эта строка будет отражена? - если
.htaccessфайл не используется, как я могу заставить Apache использовать его? - если
.htaccessиспользуется, но мойRewriteRuleвсе еще не имеет эффекта, что больше могу ли я сделать отладку?
7 ответов:
введите некоторые ненужные значения в ваш
.htaccessнапример,foo bar,sakjnaskljdnasлюбое ключевое слово, не распознанное htaccess и посетите свой URL. Если он работает, вы должны получить500 Внутренняя Ошибка Сервера
Внутренняя Ошибка Сервера
сервер обнаружил внутреннюю ошибку или неправильной настройки и не смог выполнить ваш запрос....
я предлагаю вам поставить его вскоре после
RewriteEngine on.
так как вы находитесь на вашей машине. Я предполагаю, что у вас есть доступ к Apache .
открыть
.confфайл, и искать строку, похожую на: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 будет регистрировать почти каждую деталь перезаписи.
обновление
все изменилось в Apache 2.4:
The RewriteLog и RewriteLogLevel директивы были удалены. Эта функция теперь предоставляется путем настройки соответствующего уровень ведения журнала для модуля mod_rewrite с помощью LogLevel. См. также раздел лесозаготовки и mod_rewrite.
для получения дополнительной информации о LogLevel, обратитесь Директива LogLevel
можно сделать
RewriteLog "/path/to/rewrite.log"вот так сейчас
LogLevel debug rewrite_module:debug
ответ "введите какое-то нежелательное значение" не сделал трюк для меня, мой сайт продолжал загружаться, несмотря на введенный мусор.
Я добавил следующую строку в верхней части .файл htaccess:deny from allэто быстро даст вам знать, если .htaccess является то, что подобрали или нет. Если.htaccess используется, файлы в этой папке не будут загружаться вообще.
вообще никаких изменений .htaccess должен иметь видимые эффекты. Если нет эффекта, Проверьте свои файлы конфигурации apache, что-то вроде:
<Directory ..> ... AllowOverride None ... </Directory>следует заменить на
AllowOverride Allи вы сможете изменить директивы .htaccess файлы.
возможно, более логичным способом было бы создать файл (например, тест.html), добавьте некоторый контент, а затем попробуйте установить его в качестве индексной страницы:
DirectoryIndex test.htmlдля большей части .правило 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, если он загружает поздравления, которые вы настроили .правильно реврайт.
Comments