Как отлаживать Apache mod_rewrite - PullRequest
157 голосов
/ 09 марта 2012

У меня есть две основные проблемы с mod_rewrite:

1) Нет значимой ошибки при неправильном правиле

enter image description here

2) Надежнопротестировать каждую модификацию, я должен стереть кэш Chrome.Это не ракетостроение, но я должен нажать Ctrl + Shift + Delete, затем нажать OK, затем закрыть окно и перезагрузить.

Я хотел бы посмотреть, готов ли кто-нибудь из гуру поделитьсяих секреты эффективного управления кодом mod_rewrite.

Ответы [ 5 ]

260 голосов
/ 09 марта 2012

Одна хитрость - включить журнал перезаписи. Чтобы включить его, попробуйте эти строки в главном конфиге apache или в текущем файле виртуального хоста ( не в .htaccess):

RewriteEngine On
RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 3

Поскольку Apache httpd 2.4 mod_rewrite Директивы RewriteLog и RewriteLogLevel полностью заменены новой конфигурацией ведения журнала для каждого модуля.

LogLevel alert rewrite:trace6
121 голосов
/ 28 февраля 2013

Директива LogRewrite, упомянутая Беном, больше не доступна в Apache 2.4.Вам нужно использовать директиву LogLevel.Например,

LogLevel alert rewrite:trace6

См. http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#logging

24 голосов
/ 10 марта 2012

Для базового разрешения URL-адресов используйте средство выбора командной строки, например wget или curl, чтобы выполнить тестирование, а не ручной браузер. Тогда вам не нужно очищать кеш; просто стрелка вверх и Enter в оболочке для повторного запуска тестовых выборок.

10 голосов
/ 15 июня 2015

Есть тестер htaccess .

Показывает, какие условия были проверены для определенного URL, какие соответствовали критериям и какие правила были выполнены.

Кажетсячтобы иметь некоторые глюки, хотя.

3 голосов
/ 27 октября 2013

На основании ответа Бена вы можете сделать следующее при запуске apache в Linux (в моем случае Debian).

Сначала создайте файл rewrite-log.load

/ etc / apache2 / mods-availableabe / rewrite-log.load

RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 3

Затем введите

$ a2enmod rewrite-log

с последующим

$ service apache2 restart

А когда вы закончили с отладкой своих правил перезаписи

$ a2dismod rewrite-log && service apache2 restart

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