簡體   English   中英

IIS 重定向規則優先級

[英]IIS redirect rule priority

如果我在我的 Web.config 文件中使用httpRedirectrewrite ,我如何指定哪個規則優先?

例如,假設我有一個wildcard="*"類的通用規則,但也有一個wildcard="/news" destination="/new/news" ,似乎只有wildcard="*"規則是執行。

可以從 Apache 獲得這種行為; 我想IIS中一定有辦法。

優先級與它們指定的順序相同。IIS 管理器有一個“上移”和“下移”按鈕,可以為您重新排序。

例如:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
    <rules>
        <rule name="Rule1" stopProcessing="true">
            <match url="^foo/?bar=123"/>
            <action type="Rewrite" url="foo.aspx?bar=special" appendQueryString="false" />
        </rule>
        <rule name="Rule2" stopProcessing="true">
            <match url="^foo/?bar=([A-z0-9]+)"/>
            <action type="Rewrite" url="foo.aspx?bar={R:1}" appendQueryString="false" />
        </rule>
        <rule name="Rule3" stopProcessing="true">
            <match url="^foo/"/>
            <action type="Rewrite" url="somethingElse.aspx" appendQueryString="false" />
        </rule>
    </rules>
</rewrite>
</system.webServer>
</configuration>

考慮對/foo?bar=123的傳入請求。

在這個例子中,因為Rule1是第一個,這意味着請求將被重寫為foo.aspx?bar=special而不是foo.aspx?bar=123 ,即使它同時匹配Rule1Rule2Rule3

stopProcessing="true"屬性確保不執行其他匹配規則(即Rule2Rule3 )。

來源: http : //www.iis.net/learn/extensions/url-rewrite-module/url-rewrite-module-configuration-reference#Rules_Evaluation

IIS 中的每個配置級別都可以定義零個或多個重寫規則。 規則按照指定它們的相同順序進行評估 URL 重寫模塊使用以下算法處理規則集:

  1. 首先,將 URL 與規則模式進行匹配。 如果不匹配,URL 重寫模塊會立即停止處理該規則,並繼續執行下一條規則。
  2. 如果模式匹配並且規則沒有條件,則 URL 重寫模塊執行為此規則指定的操作,然后繼續執行下一個規則,在該規則中使用替換的 URL 作為該規則的輸入。
  3. 如果模式匹配並且規則有條件,則 URL 重寫模塊會評估條件。 如果評估成功,則執行指定的規則動作,然后將重寫后的URL作為后續規則的輸入

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM