Как отладить Apache mod_rewrite

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

1) Не сообщалось о значимой ошибке, когда у меня есть неверное правило

enter image description here

2) Чтобы надежно проверить каждую модификацию, я должен удалить хром-кеш. Это не ракетостроение, но мне нужно нажать Ctrl + Shift + Delete, затем нажмите "ОК", затем закройте окно и перезагрузите.

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

Ответ 1

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

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

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

LogLevel alert rewrite:trace6

Ответ 2

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

LogLevel alert rewrite:trace6

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

Ответ 3

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

Ответ 4

Там тестер htaccess.

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

У нас, кажется, есть некоторые сбои.

Ответ 5

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

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

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

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

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

$a2enmod rewrite-log

за которым следует

$service apache2 restart

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

$a2dismod rewrite-log && & service apache2 restart