繁体   English   中英

IIS网址重写:URL无法识别

[英]IIS Url-Rewrite: URL won't get recognized

我知道URL重写模块存在问题。

我要实现的目标:我现在有一个地址为“ test-server”的网站。 输入URL后,我想通过{HTTP_ACCEPT_LANGUAGE}变量将URL更改为“ test-server / de”或“ test-server / en”。 这仅应在URL“ test-server”上起作用,因此,当用户位于“ test-server / de /”之类的子页面上时,他可以手动将URL更改为“ test-server / en /”,而无需再次重定向。

这是我所知道的:

<rewrite>          
        <rules>              
            <rule name="ToGermanPage" enabled="true" stopProcessing="true">
                <match url=".*" />
                <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                    <add input="{HTTP_ACCEPT_LANGUAGE}" pattern="^de" />
                    <add input="{URL}" pattern=".+test-server" />
                </conditions>
                <action type="Redirect" url="{R:0}/{HTTP_ACCEPT_LANGUAGE}" appendQueryString="true" />
            </rule>
            <rule name="ToEnglishPage" enabled="true" stopProcessing="true">
            <match url="^test-server" />
                <action type="Redirect" url="http://test-server/en" />
                <conditions logicalGrouping="MatchAny" trackAllCaptures="false">
                    <add input="{HTTP_ACCEPT_LANGUAGE}" pattern="^de" negate="true" />
                </conditions>
            </rule>
        </rules>
</rewrite>

我的问题是,如果键入以下内容:它无法识别URL,则条件内的{URL}参数也是如此。

看这条规则...

<match url=".*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
    <add input="{HTTP_ACCEPT_LANGUAGE}" pattern="^de" />
    <add input="{URL}" pattern=".+test-server" />
</conditions>
<action type="Redirect" url="{R:0}/{HTTP_ACCEPT_LANGUAGE}" appendQueryString="true" />

match url.* ,它将匹配所有资源。 如果只希望重定向对http(s)://test-server/起作用,则应指定一个空白资源( url="^$" )。

您可以使用{HTTP_HOST}而不是{URL}来仅匹配您的主机名(无需担心http/https )。

另外,您的重定向URL使用的是{R:0} ,它是匹配/资源 URL。 对于http://test-server ,由于未指定资源路径,所以匹配 URL为空白。 不过,由于您只需要重定向到deen您应该只能从重定向URL中完全删除{R:0} 因此,尝试这样的事情:

<match url="^$" />
<conditions>
    <add input="{HTTP_HOST}" pattern="^test-server$" />
</conditions>
<action type="Redirect" url="{HTTP_ACCEPT_LANGUAGE}" appendQueryString="true" />

这应该与http(s)://test-server匹配,并重定向到以下任一地址:

http(s)://test-server/en

要么

http(s)://test-server/de

取决于{HTTP_ACCEPT_LANGUAGE}的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM