Есть ли настройка IIS, позволяющая избавиться от лишних символов «/» в запрошенном URL-адресе?

StackOverflow https://stackoverflow.com/questions/213153

Вопрос

Общая проблема:

У нас есть URL-адреса, поступающие на наши веб-серверы IIS в следующем формате:

http://www.server.com/page.aspx

Мы также видим, что приходят такие URL-адреса:

http://www.server.com//page.aspx

Мы хотели бы избавиться от этого дополнительного символа пути, потому что, когда пользовательский агент — Internet Explorer, это разрешается как две разные страницы и, таким образом, содержимое загружается дважды, когда оно должно быть разрешено из кеша.

Я не уверен, можно ли решить эту проблему с помощью чего-то вроде модуля перезаписи URL-адресов или есть какие-то настройки конфигурации.

Это было полезно?

Решение

Я думаю, проблема в IE, а не в IIS.

Переписывание URL-адресов обычно относится к процессу сопоставления URL-адреса с http://example/shoes/clarkes к http://example/shoes.aspx?maker=clarkes на сервере, чтобы браузер об этом не знал.

Что вам нужно сделать, это перенаправить браузер с http://www.server.com//page.aspx к http://www.server.com/page.aspx используя 301 HTTP-код ответа.

В теории:

Поскольку вы, похоже, используете ASP.NET, наиболее прозрачным способом сделать это будет написать HttpМодуль который проверяет наличие двойных косых черт в запрошенном URI и выполняет перенаправление.

Самый простой способ сделать это — поместить в Global.ascx.(cs|vb) некоторый код для проверки запрошенного URI. Начать запрос.

В любом случае код для проверки будет одинаковым.

На практике:

Возможно, IIS или ASP.NET проглатывают двойной «/» прежде, чем вы сможете его увидеть.Если это IIS, возможно, вам придется использовать прокси-сервер перед IIS.Если это ASP.NET, возможно, вы сможете найти Расширение ISAPI это сделает всю работу за вас.

Другие варианты

Вы могли бы либо

  • Разделите страницу так, чтобы большую часть отдельных ресурсов можно было кэшировать отдельно от содержимого HTML.
  • Объясните пользователям, что им не нужно вставлять лишнюю косую черту.

Другие советы

Исправьте ссылки!

Скорее всего, вы видите двойную косую черту, потому что на вашем сайте есть ошибочные ссылки, либо жестко запрограммированные, либо созданные сценарием.Это легко сделать по ошибке в сценарии, объединяющем http://example.com/ + /page.aspx.Обратите пристальное внимание на эти типы конкатенаций!

IIS очищает лишние косые черты, поэтому эту проблему невозможно решить с помощью кода ASP.NET или HttpModule.Дополнительные косые черты даже не попадают в файл журнала IIS.Я тестировал с использованием IIS7 и telnet и не смог получить дополнительные косые черты в журнале или ASP.NET.

Я не уверен, почему исходный вопрос касается только IE.И IE, и FF допускают дополнительные косые черты в URL-адресе и, по-видимому, передают их, хотя для проверки я не использовал анализ пакетов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top