Как отладить htaccess переписать script
Мне было интересно, как создать и отладить этот вид script, который может стать немного головной болью, если вы не используете их для записи (например, я).
Используете ли вы инструмент для их создания?
Какие-нибудь подсказки для отладки, что происходит, а не просто создать локальную структуру и посмотреть, что происходит в браузере?
Ответы
Ответ 1
Примечание для читателей: старый ответ больше не работает.
Начиная с версии 2.4, Apache больше не поддерживает директивы RewriteLogLevel
и RewriteLog
. Теперь все они объединены с единственной директивой LogLevel
(см. Документация файлов журналов), которая поддерживает уровни журнала, связанные с модулем, с префиксами и trace[1-8]
. Чтобы установить самый высокий уровень ведения журнала для модуля перезаписи, вы теперь используете следующее:
LogLevel warn rewrite:trace8
Ответ 2
-
Вы можете использовать любой инструмент для тестирования регулярных выражений, чтобы помочь вам протестировать ваши шаблоны по URL-адресам (я использую "Regex Coach" - приложение для Windows). Это поможет вам только с шаблоном - вы уже должны знать общую логику/ход работы переписывания.
-
Чтобы отладить, вы должны иметь возможность редактировать конфигурационный файл Apache - используйте RewriteLogLevel 9
и RewriteLog/path/to/rewrite.log
чтобы увидеть точные сведения о том, что происходит во время перезаписи URL (поскольку это серверная конфигурация, вам нужно будет перезапустить Apache применить новый конфиг сервера).
Вам нужен уровень 9, если вы хотите отладить проблемное правило. Уровень 3 или любое другое довольно низкое значение покажет вам только обзор того, что происходит, не вдаваясь в подробности.
Не используйте уровень 9 на занятом/производственном сервере, поскольку он может создать огромный журнал в течение нескольких секунд.
-
Если вам нужно выполнить 301 (постоянную) переадресацию - вместо нее выполните 302 во время периода тестирования (пока вы не будете удовлетворены правилом и результатами - затем измените на 301), поскольку современные браузеры кэшируют 301 переадресацию, так что вы можете в итоге в расстраивающей ситуации, когда вы полностью изменили правило (или даже удалили его), но браузер все еще выполняет перенаправления. Единственное лекарство в таких случаях: - очистить кеш браузера и перезагрузить страницу.
Ответ 3
Вы можете установить директиву RewriteLog в своей конфигурации виртуального хоста
Он напишет необходимую информацию в указанный вами файл.
RewriteLog "/usr/local/var/apache/logs/rewrite.log"
Кроме того, используйте директиву RewriteLogLevel для управления объемом регистрации
RewriteLogLevel 3
прочитать