Перенаправление на мобильную страницу по умолчанию с помощью модуля UrlRewrite на IIS - PullRequest
0 голосов
/ 04 июля 2018

Предположим, есть две спроектированные страницы, одна для рабочего стола с именем mobile.html, а другая - desktop.html, ниже UrlRewrite Я могу перенаправить пользователя на mobile.html

<rewrite>
      <rules>
            <rule name="MobileRedirect" stopProcessing="true">
                <match url=".*" />
                <conditions>
                    <add input="{HTTP_USER_AGENT}" pattern="midp|mobile|phone|android|iphone|ipad" />
                </conditions>
                <action type="Redirect" url="/mobile.html" />
            </rule>
      </rules>
</rewrite>

но он заперт в слишком большом количестве запросов

ваш сайт перенаправлял вас слишком много раз.

ясно, что из-за этого rule он будет без проблем перенаправлен на mobile.html, но, получив mobile.html, что действие произошло снова, он будет сброшен при перенаправлении цикла. также добавив <add input="{url}" negate="true" pattern="mobile.html"/>, это не работает.

Ответы [ 2 ]

0 голосов
/ 20 августа 2018

Если я правильно понимаю вашу проблему, вы хотите, чтобы пользователи мобильных телефонов, которые приземляются на desktop.html, были перенаправлены на mobile.html, а пользователи настольных компьютеров, которые приземляются на mobile.html, были перенаправлены на desktop.html. Для этого потребуется 2 правила:

<rewrite>
      <rules>
            <rule name="MobileRedirect" stopProcessing="true">
                <match url="desktop.html" />
                <conditions>
                    <add input="{HTTP_USER_AGENT}" pattern="midp|mobile|phone|android|iphone|ipad" />
                </conditions>
                <action type="Redirect" url="/mobile.html" />
            </rule>
            <rule name="DesktopRedirect" stopProcessing="true">
                <match url="mobile.html" />
                <conditions>
                    <add input="{HTTP_USER_AGENT}" pattern="midp|mobile|phone|android|iphone|ipad" negate="true" />
                </conditions>
                <action type="Redirect" url="/desktop.html" />
            </rule>
      </rules>
</rewrite>

Обратите внимание, что эти 2 правила основаны на пользовательском агенте , которые никогда не являются надежными на 100% (поскольку их можно изменить).

0 голосов
/ 04 июля 2018

Вы можете попробовать следующее. Добавьте еще одно условие, исключающее URL-адрес mobile.html.

<rule name="MobileRedirect" stopProcessing="true">
  <match url="(.*)" />
  <conditions>
    <add input="{HTTP_USER_AGENT}" pattern="midp|mobile|phone|android|iphone|ipad" />
    <add input="{PATH_INFO}" pattern="^/mobile.html$" negate="true"/>
  </conditions>
  <action type="Redirect" url="/mobile.html" />
</rule> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...