URL 在 IIS 8.0 上重写

URL rewrite on IIS 8.0

我已经在 IIS 8.0 上安装了 URL 重写模块并配置了规则

  1. 如果用户不带 www,它将以 www 为前缀
  2. 如果用户来自 http 那么它将重定向到 https
  3. 如果用户来自移动浏览器而不是发送到移动网站

规则如下

<appcmd>
    <CONFIG CONFIG.SECTION="system.webServer/rewrite/globalRules" path="MACHINE/WEBROOT/APPHOST" overrideMode="Inherit" locked="false">
        <system.webServer-rewrite-globalRules>
            <rule name="Mobile Redirect" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
                <match url="^$" ignoreCase="true" />
                <conditions logicalGrouping="MatchAny" trackAllCaptures="false">
                    <add input="{HTTP_USER_AGENT}" pattern="android|blackberry|googlebot-mobile|iemobile|iphone|ipod|opera mobile|palmos|webos" />
                    <add input="{HTTP_X-Device-User-Agent}" pattern="midp|mobile|phone" />
                    <add input="{HTTP_X-OperaMini-Phone-UA}" pattern="midp|mobile|phone" />
                </conditions>
                <serverVariables>
                </serverVariables>
                <action type="Redirect" url="/en-mobile" appendQueryString="false" />
            </rule>
            <rule name="Add HTTPS and WWW prefix to website.COM" stopProcessing="true">
                <match url="(.*)" />
                <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                    <add input="{HTTPS}" pattern="^OFF$" />
                    <add input="{HTTP_HOST}" pattern="^website\.com" />
                </conditions>
                <serverVariables>
                </serverVariables>
                <action type="Redirect" url="https://www.website.com/{R:1}" appendQueryString="false" />
            </rule>
            <rule name="Add HTTPS to WWW.website.COM" stopProcessing="true">
                <match url="(.*)" />
                <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                    <add input="{HTTPS}" pattern="^OFF$" />
                    <add input="{HTTP_HOST}" pattern="^www\.(.+)$" />
                </conditions>
                <serverVariables>
                </serverVariables>
                <action type="Redirect" url="https://www.website.com/{R:1}" />
            </rule>
        </system.webServer-rewrite-globalRules>
    </CONFIG>
</appcmd>

在上面的第一条规则中,移动重定向是在用户来自移动浏览器时完成的。我重定向到 https://www.website.com/en-mobile 但是当我这样做时 https://m.website.com/en-mobile 它给出了错误但是当我手动浏览时它工作得很好。那么当人们来自 https://www.website.com to https://m.website.com/en-mobile

时,我如何重定向到那个 url

我可以解决这个问题,可能对某些人有帮助,所以我在这里添加我的解决方案。我将移动重定向规则操作更改为

<action type="Redirect" url="https://m.website.com/en-mobile" appendQueryString="true" redirectType="Found" />

将 redirectType 设置为 found 解决了我的问题。