Перенаправление IIS 7.5 / перезапись URL на мобильную версию веб-сайта
Я ищу решение IIS (не программирование) для перенаправления веб-сайта на мобильную версию веб-сайта. Похоже, что это возможно, но не обязательно, с помощью IIS Redirect или IIS URL Rewrite 2.0. Если это так, как можно поступить об этом?
Пример: mywebsite.com/ перенаправляет (если мобильное устройство) mywebsite.com/mobile
Примечание: в настоящее время мы используем IIS Redirect для перенаправления http на https.
1 ответ
Вы должны иметь возможность использовать условие в своем правиле перезаписи IIS.
<rule name="MobileBrowser" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_COOKIE}" pattern="nomobile" ignoreCase="true" negate="true" />
<add input="{REQUEST_URI}" pattern="/mobile.*" negate="true" />
<add input="{FileContains:{HTTP_USER_AGENT}}" pattern=".+" />
</conditions>
<action type="Rewrite" url="http://mysite.com/mobile" appendQueryString="false" redirectType="Found" />
</rule>
У меня нет машины 2008R2 для тестирования, и я должен убедиться, что мой синтаксис правильный, но этого должно быть достаточно, чтобы направить вас в правильном направлении.
Основы этого правила гласят:
- Соответствовать любому URL
- Пока браузер не имеет "nomobile" cookie
- В URL запроса еще нет /mobile
- Пользовательский агент сопоставляет содержимое файла.
Это правило требует использования специального провайдера, чтобы вы могли хранить все различные пользовательские агенты, которые могут быть мобильными (и их длинный список). Чтобы настроить пользовательский провайдер, посмотрите здесь.
Я добавил проверку файлов cookie, поскольку некоторым людям все еще нравится просматривать сайт в полном размере, даже на своем мобильном устройстве. Это дает вам возможность справиться с этим, установив куки в их браузере, и правило их пропускает.
Здесь есть немного более простая версия, которая также подходит для пары примеров.