Почему IIS 7.5 добавляет косую черту в папки? Можем ли мы отключить вежливое перенаправление для правила перезаписи URL, удаляющего косую черту? - PullRequest
22 голосов
/ 07 декабря 2011

IIS выполняет очистку URL-адресов в каталогах, добавляя косую черту. Смотрите это старые документы из IIS 6: IIS генерирует редирект вежливости при запросе папки без завершающей косой черты

  1. Почему? Намерение все еще актуально?
  2. Какие-либо последствия для безопасности?
  3. Как отключить его, чтобы это работало с правилом перезаписи URL "RemoveTrailingSlashRule"

Когда вы добавляете правило в IIS 7.5 с URL Rewrite 2, правило не будет применяться к каталогам (используя IsDirectory) и папкам (используя IsFolder).

См. Это предупреждение в разделе Добавить правило для добавления или удаления символа косой черты: See this warning on Add a rule to append or remove the trailing slash symbol

Это создаст RemoveTrailingSlashRule1: Edit Inbound Rule RemoveTrailingSlashRule1

1 Ответ

5 голосов
/ 13 сентября 2014

У меня есть ответ для конкретного случая дочернего приложения IIS здесь: https://stackoverflow.com/a/25817317/292060. Дочернее приложение, кажется, является обычным преступником, но в этом вопросе явно не описано.

Чтобы попытаться ответить на вопросы, вот мое мнение о работе с IIS и Microsoft в течение многих лет. У меня нет твердых источников для цитирования; отчасти это просто интуитивные чувства.

  1. Почему? Намерение все еще актуально?

Я думаю, что это связано с оригинальной функцией «документ по умолчанию», а именно index.html. Веб-сайты хотели, чтобы их домашняя страница была просто доменом, а затем распространялась на подпапки. С переписыванием URL, цель больше не актуальна - вы можете переписать на свое усмотрение, и, скорее всего, IIS уйдет с дороги. Обычно нужны дружественные URL-адреса и отсутствие косой черты (за исключением корня домена / веб-сайта - требуется наличие косой черты, даже если некоторые браузеры, такие как Chrome, выглядят симпатично и скрывают это).

  1. Какие-либо последствия для безопасности?

Я думаю, что единственным следствием безопасности был исходный просмотр каталогов. Если вы забыли сделать документ по умолчанию, а просмотр каталогов был оставлен включенным, то люди могли бы просматривать файлы вашего сайта. Насколько я знаю, просмотр каталога давно отключен как настройка по умолчанию.

При любых запросах, независимо от того, идет ли косая черта или нет, перезапись URL-адреса или нет, ваш сервер и код должны выдерживать неправильные запросы. Это верно для всех ситуаций, а не только для слешей. http://xkcd.com/327/

  1. Как отключить его, чтобы это работало с правилом перезаписи URL "RemoveTrailingSlashRule"

У меня есть ответ, если проблема связана с дочерним заявлением, здесь: https://stackoverflow.com/a/25817317/292060 Резюме есть, в IIS:

  • Отключить функцию «Документ по умолчанию» для дочернего приложения.
  • Используя Url Rewrite, создайте правило для перезаписи (не перенаправления) пустого запроса в default.aspx

Если этот вопрос относится к более общей проблеме, включая обычные подпапки, даже если это не дочернее приложение, рассмотрите возможность удаления «Не является каталогом» из правила и разрешите перенаправление, даже когда оно видит каталог. Это может сработать или может создать бесконечный цикл перенаправления, я не уверен.

...