В правилах IIS URL Rewrite есть несколько опасный флаг stopProcessing. По умолчанию он установлен в false, т.е. даже если очередное правило сработало, обработка дальнейших правил продолжается. Т.е. более общие правила, которые расположены в конце файла, могут "поглотить" правильный результат.
Это случится, если, допустим, первое правило должно отлавливать одну конкретную URL /deals/chrismas/ , а второе правило - все остальные типы спецпредложений с URL вида /deals/*/ (где зведочка - что угодно, но не сhristmas).
Коварность флага заключается в том, что он игнорируется, если Вы делаете простое перенаправление (301/302 redirect). Поэтому в Интернете множество примеров кода без этого флага, и многие про него просто не знают. На месте Microsoft я бы по умолчаю установил его в true.
Чтобы не запутаться, я всегда использую stopProcessing="true" для Rewrite. И никогда не использую для Redirect (чтобы не засорять код).
Это случится, если, допустим, первое правило должно отлавливать одну конкретную URL /deals/chrismas/ , а второе правило - все остальные типы спецпредложений с URL вида /deals/*/ (где зведочка - что угодно, но не сhristmas).
Коварность флага заключается в том, что он игнорируется, если Вы делаете простое перенаправление (301/302 redirect). Поэтому в Интернете множество примеров кода без этого флага, и многие про него просто не знают. На месте Microsoft я бы по умолчаю установил его в true.
Чтобы не запутаться, я всегда использую stopProcessing="true" для Rewrite. И никогда не использую для Redirect (чтобы не засорять код).
Комментариев нет:
Отправить комментарий