Это случай "задавать вопрос и отвечать на него сам", который я публикую для всех, у кого есть такая же проблема.
У меня возникли проблемы с отладкой набора правил mod_rewrite в файле .htaccess на общем сервере, где я даже не мог получить доступ к журналам ошибок Apache. Я нашел опрятный способ их отладки, вот что:
-
Напишите короткий script, который просто распечатает переменные запроса. например в PHP:
<?='<pre>',htmlentities(print_r($_GET,true)),'</pre>'?>
- это все, что вам нужно.
-
Скажем, вы назовете это script "show.php" и поместите его в /public _html. Затем в вашем файле .htaccess укажите точку в вашем наборе правил, которая, по вашему мнению, может вызвать проблему, и вставьте это правило:
RewriteRule (.*) /show.php?url=$1 [END]
Эффект такой же, как вставка инструкции PRINT в обычной программе. Это даст вам знать, что (а) вы достигли этой точки в наборе правил и (б), что текущий переписан URL.
Это не так, как flash, как настоящий инструмент отладки, но он выполняет свою работу.
Если вы используете Apache < 2.3.9, вам нужно использовать [L]
вместо [END]
. В этом случае вы должны обратить внимание на то, что ваш набор правил не должен пытаться переписать "/show.php" на что-либо еще. Если это проблема, вы можете исправить ее, добавив это правило в самый верх:
RewriteRule ^show.php$ - [L]
... Не забудьте удалить его, когда вы закончите отладку!