Как отлаживать.htaccess RewriteRule не работает



у меня есть RewriteRule на .htaccess файл, который ничего не делает. Как я могу устранить эту проблему?




  • как я могу проверить, если .htaccess файл даже читается и подчиняется Apache? Могу ли я написать Эхо-сообщение "это работает", если я его напишу, где эта строка будет отражена?

  • если .htaccess файл не используется, как я могу заставить Apache использовать его?

  • если .htaccess используется, но мой RewriteRule все еще не имеет эффекта, что больше могу ли я сделать отладку?

968   7  

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:

С обновление до 2,4 с 2,2

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 в большую область ввода и нажмите кнопку "Тест".

http://htaccess.mwl.be/

Почему бы не положить немного мусора в вашем .htaccess файл и попробуйте перезагрузить apache. Если apache не запускается, вы знаете его работу. Удалите мусор, а затем перезагрузите apache, если он загружает поздравления, которые вы настроили .правильно реврайт.

Comments

    Ничего не найдено.