отладка isapi или тестовый жгут - PullRequest
2 голосов
/ 14 марта 2011

Интересно, знал ли кто-нибудь об отладке набора правил переписывания в isapi?

У меня довольно большой набор правил, и поэтому их нелегко выполнить вручную.Так что мне было интересно, есть ли какие-нибудь тестовые возможности, доступные для вставки в ваши правила и передачи URL-адреса, и чтобы узнать, какие правила / s совпадают и каков результирующий URL?

Или, если это не удастся, какая-то продвинутая регистрация, которая поможет мне понять, где могут быть мои проблемы.

Любая помощь будет высоко цениться, когда мой мозг скоро растает!

Приветствия

Ответы [ 2 ]

7 голосов
/ 23 июля 2011

Я сделал это с помощью журнала отладки 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'
1 голос
/ 26 июля 2011

Если вы можете установить Helicon Ape вместо ISAPI_Rewrite на сервере или на компьютере разработчика, вы можете использовать более удобный отладчик, который поставляется с продуктом Ape. Документация mod_developer и статья Трассировка трафика HTTP и настройка IIS Helicon Ape совместим с ISAPI_Rewrite 3, когда речь идет о синтаксисе RewriteRule, поэтому вы можете использовать его для разработки правил.

...