2011-03-14 5 views
2

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

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

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

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

Приветствия

ответ

7

Я сделал это с ведением журнала отладки 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 \ (или эквивалент окна каталога установки)

(у меня есть редко (никогда?) использовал LogLevel, я просто держу его там, прокомментировал, чтобы напомнить себе, что я его не использую.)

Удалите строку, удалив ведущий # и сохраните его. (В своем редакторе нажмите «Применить» в левом верхнем углу или ctrl-s, затем снова нажмите «Применить» в главном диалоговом окне. Вы можете оставить главное диалоговое окно открытым, чтобы быстро прокомментировать его снова.)

Файл Rewrite.log будет начните быстро заполняться. Это действительно практично только в системе разработки, где ваши запросы являются единственными. Если вы находитесь на производстве, включите его, нажмите на страницу и быстро отключите его. В файлах журналов есть IP-адреса, которые могут помочь вам найти ваши правила.

Что вы увидите, это начальный запрос, проходящий через все правила, пока он не будет соответствовать. Затем вы увидите [INTERNAL REDIRECT], что означает, что он переписывает правила (это немного неправильное имя, которое меня обманывало какое-то время), это просто означает, что он переписывается из нашего представления, а также «явно перенаправляет перенаправление» для фактического переадресации в Интернете).

Вот файл журнала пример из моего ответа на этот вопрос:
How to redirect a page in ISAPI_Rewrite

Это перенаправляет/cnvrt к/конвертировать, а затем переписывает/конвертировать в /convert.aspx

Вы можете увидеть первый блок, соответствующий перенаправлению и выполняющий его. Затем второй блок - это соответствие/преобразование url и переписывание в convert.aspx. Если нет совпадения, это просто проходит через все правила. Вы можете видеть это в третьем блоке, где мой браузер пошел искать favicon.ico, которого он не нашел.

Эти журналы также являются открытием для каждого запроса - каждое изображение, таблица стилей и т. Д. Проходят через все правила. Я играл с правилами «shortcut», чтобы поймать/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' 
+2

Ничего себе подробный ответ, спасибо :) Я обнаружил это сам в промежутке, хотя и использовал его для большого эффекта - хотя, как вы говорите, это заставит ваш мозг временно расплавиться, когда вы впервые посмотрите на журнал. Отмечено это как ответ! – WickyNilliams

+0

Спасибо за отличный ответ! Пожалуйста, свяжитесь со мной по адресу [email protected] Я буду рад поговорить с вами. – Yaroslav

1

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