簡體   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