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