Как отладить скрипт переписывания htaccess - PullRequest
19 голосов
/ 12 октября 2011

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

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

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

Ответы [ 3 ]

18 голосов
/ 10 февраля 2013

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

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

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

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

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

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

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

1 голос
/ 12 октября 2011

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

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

Далее, используйте директиву RewriteLogLevel для контроля количества ведения журнала

RewriteLogLevel 3

прочитано

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...