Как отладить htaccess переписать script

Мне было интересно, как создать и отладить этот вид script, который может стать немного головной болью, если вы не используете их для записи (например, я).

Используете ли вы инструмент для их создания?

Какие-нибудь подсказки для отладки, что происходит, а не просто создать локальную структуру и посмотреть, что происходит в браузере?

Ответ 1

Примечание для читателей: старый ответ больше не работает.

Начиная с версии 2.4, Apache больше не поддерживает директивы RewriteLogLevel и RewriteLog. Теперь все они объединены с единственной директивой LogLevel (см. Документация файлов журналов), которая поддерживает уровни журнала, связанные с модулем, с префиксами и trace[1-8]. Чтобы установить самый высокий уровень ведения журнала для модуля перезаписи, вы теперь используете следующее:

LogLevel warn rewrite:trace8

Ответ 2

  1. Вы можете использовать любой инструмент для тестирования регулярных выражений, чтобы помочь вам протестировать ваши шаблоны по URL-адресам (я использую "Regex Coach" - приложение для Windows). Это поможет вам только с шаблоном - вы уже должны знать общую логику/ход работы переписывания.

  2. Чтобы отладить, вы должны иметь возможность редактировать конфигурационный файл Apache - используйте RewriteLogLevel 9 и RewriteLog/path/to/rewrite.log чтобы увидеть точные сведения о том, что происходит во время перезаписи URL (поскольку это серверная конфигурация, вам нужно будет перезапустить Apache применить новый конфиг сервера).

    Вам нужен уровень 9, если вы хотите отладить проблемное правило. Уровень 3 или любое другое довольно низкое значение покажет вам только обзор того, что происходит, не вдаваясь в подробности.

    Не используйте уровень 9 на занятом/производственном сервере, поскольку он может создать огромный журнал в течение нескольких секунд.

  3. Если вам нужно выполнить 301 (постоянную) переадресацию - вместо нее выполните 302 во время периода тестирования (пока вы не будете удовлетворены правилом и результатами - затем измените на 301), поскольку современные браузеры кэшируют 301 переадресацию, так что вы можете в итоге в расстраивающей ситуации, когда вы полностью изменили правило (или даже удалили его), но браузер все еще выполняет перенаправления. Единственное лекарство в таких случаях: - очистить кеш браузера и перезагрузить страницу.

Ответ 3

Вы можете установить директиву RewriteLog в своей конфигурации виртуального хоста Он напишет необходимую информацию в указанный вами файл.

RewriteLog "/usr/local/var/apache/logs/rewrite.log"

Кроме того, используйте директиву RewriteLogLevel для управления объемом регистрации

RewriteLogLevel 3

прочитать