Как отлаживать.откройте файл. 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 все изменилось:

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

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

http://htaccess.mwl.be/


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