Я сделал это с помощью журнала отладки isapi_rewrite.Это работает хорошо, но это не поможет с таянием вашего мозга.Было бы неплохо использовать настоящий отладчик.
Я предполагаю, что вы используете isapi_rewrite v3.
Ведение журнала контролируется в основном файле httpd.conf .Отредактируйте этот файл с помощью приложения «Менеджер», установка по умолчанию при запуске -> Программы -> Helicon -> ISAPI_Rewrite 3 -> ISAPI_Rewrite Manager
Кроме того, вы можете отредактировать его вручную в C: \ Program Files \ Helicon \ISAPI_Rewrite 3 \ httpd.conf (или эквивалентный каталог установки Windows).Я считаю, что он скрыт, поэтому вам нужно показать скрытые файлы.
Вот мои комментарии, которые я поместил в этот файл, чтобы я запомнил настройки.При необходимости закомментируйте строку ввода и вывода.
# Logging
# RewriteLog specifies log file.
# RewriteLogLevel specifies verbosity. 0 = none, 9 = all.
#RewriteLogLevel 9
# LogLevel is for general logging for config file loading problems, not rewriting. Default is warn.
#LogLevel debug
RewriteLogLevel
- это настройка, которая включает и выключает регистрацию.Я обычно использую 0 или 9. Я пробовал другие настройки из любопытства, но не знаю специфики.Обычно я хочу все, если я гоняюсь за проблемой.
RewriteLog указывает альтернативный файл журнала, но я просто оставляю его неуказанным, и он записывает в Rewrite.log
в C: \ Program Files \ Helicon \ISAPI_Rewrite 3 \ (или эквивалентный каталог установки Windows)
(я редко (никогда?) Использовал LogLevel; я просто оставляю его там, закомментированный, чтобы напомнить себе, что я его не использую.)
Раскомментируйте строку, удалив начальную #
и сохранив ее.(В их редакторе нажмите «Применить» в левом верхнем углу или ctrl-s; затем снова «Применить» в главном диалоговом окне. Вы можете оставить главное диалоговое окно открытым, чтобы быстро его закомментировать.)
The Rewrite.logфайл начнет быстро заполняться.Это действительно только практично для системы разработки, где ваши запросы являются единственными.Если вы находитесь на производстве, включите его, нажмите на страницу и быстро выключите.Файлы журнала имеют IP-адреса, которые могут помочь найти ваши правила.
То, что вы увидите, - это начальный запрос, проходящий через все правила, пока он не совпадет.Затем вы увидите [INTERNAL REDIRECT]
, что означает, что он завершил переписывание правил (это немного неправильно, что меня обманули на некоторое время - это просто означает, что это переписывает с нашей точки зрения, по сравнению с «явным принудительным перенаправлением» для реального веб-перенаправления)).
Вот пример файла журнала из моего ответа на этот вопрос: Как перенаправить страницу в ISAPI_Rewrite
Это перенаправляет / cnvrt в / преобразовать, затем переписывает / преобразовывает в /convert.aspx
Вы можете увидеть первый блок, соответствующийперенаправить и делать это.Затем вторым блоком является сопоставление URL-адреса / convert, которое переписывается в convert.aspx.Если нет совпадения, оно просто проходит через все правила.Вы можете увидеть это в третьем блоке, где мой браузер искал favicon.ico, который он не нашел.
Эти журналы также открывают глаза на то, как часто проходит каждый запрос - каждое изображение, таблицы стилей и т. д. пройти через все правила.Я поиграл с «горячими» правилами, чтобы перехватить / img, / images, * .css, * .js, и просто выйти, ничего не меняя.Вы можете увидеть, как они пытаются найти соответствие ниже.
Последнее замечание: когда все сделано, и регистрация выключена, обязательно просто откройте, очистите и сохраните Rewrite.log, НЕ УДАЛЯТЬ Rewrite.log На форумах Helicon много сообщений о проблемах с разрешением при воссоздании файла.Очевидно, isapi_rewrite может установить и отредактировать его, но могут возникнуть проблемы при его воссоздании.
(Deleted IP addresses, date and time, domain and some session id tracking)
(1) Htaccess process request C:\Program Files\Helicon\ISAPI_Rewrite3\httpd.conf
(1) Htaccess process request d:\websitepath\.htaccess
(3) applying pattern '^(?:/img/|/images/)' to uri '/cnvrt'
(3) applying pattern '(?:\.css|\.js)$' to uri '/cnvrt'
(3) applying pattern '(.*)' to uri '/cnvrt'
(4) RewriteCond: input='www.yourdomain.com' pattern='^(?!www\.|x\.|loc)(.*)$' => not-matched
(3) applying pattern '^/cnvrt$' to uri '/cnvrt'
(1) escaping /convert
(2) explicitly forcing redirect with http://www.yourdomain.com/convert
(2) internal redirect with /cnvrt [INTERNAL REDIRECT]
(2) init rewrite engine with requested uri /convert
(1) Htaccess process request C:\Program Files\Helicon\ISAPI_Rewrite3\httpd.conf
(1) Htaccess process request d:\websitepath\.htaccess
(3) applying pattern '^(?:/img/|/images/)' to uri '/convert'
(3) applying pattern '(?:\.css|\.js)$' to uri '/convert'
(3) applying pattern '(.*)' to uri '/convert'
(4) RewriteCond: input='www.yourdomain.com' pattern='^(?!www\.|x\.|loc)(.*)$' => not-matched
(3) applying pattern '^/cnvrt$' to uri '/convert'
(3) applying pattern '^/convert$' to uri '/convert'
(1) Rewrite URL to >> /projects/rw/convert.aspx
(2) rewrite '/convert' -> '/projects/rw/convert.aspx'
(2) internal redirect with /projects/rw/convert.aspx [INTERNAL REDIRECT]
(2) init rewrite engine with requested uri /favicon.ico
(1) Htaccess process request C:\Program Files\Helicon\ISAPI_Rewrite3\httpd.conf
(1) Htaccess process request d:\websitepath\.htaccess
(3) applying pattern '^(?:/img/|/images/)' to uri '/favicon.ico'
(3) applying pattern '(?:\.css|\.js)$' to uri '/favicon.ico'
(3) applying pattern '(.*)' to uri '/favicon.ico'
(4) RewriteCond: input='www.yourdomain.com' pattern='^(?!www\.|x\.|loc)(.*)$' => not-matched
(3) applying pattern '^/cnvrt$' to uri '/favicon.ico'
(3) applying pattern '^/convert$' to uri '/favicon.ico'