Iis

IIS URL 重寫模組查詢字元串參數

  • October 24, 2016

是否可以使用URL 重寫來提供比它具有的“附加查詢字元串”複選框更複雜的查詢字元串功能?具體來說,是否可以為某些查詢字元串參數指定鍵並讓它只附加那些名稱值對。

例如,對於輸入:

http://www.example.org/test?alpha=1&beta=2&gamma=3

以及查詢字元串參數鍵列表:beta gamma

它應該輸出: http ://www.example.org/redirect?beta=2&gamma=3

(請注意,輸入中的查詢字元串參數以任意順序出現。)

我的解決方案是使用條件。通過匹配條件,{QUERY_STRING}您可以使用反向引用在重定向 URL 中使用它們。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
   <system.webServer>
       <rewrite>
           <rules>
               <rule name="Redirect" stopProcessing="true">
                   <match url="(.*)" />
                   <conditions trackAllCaptures="true">
                       <add input="{QUERY_STRING}" pattern="&?(beta=[^&]+)&?" />
                       <add input="{QUERY_STRING}" pattern="&?(gamma=[^&]+)&?" />
                       <add input="{REQUEST_URI}" pattern="^/redirect" negate="true" />
                   </conditions>
                   <action type="Redirect" url="/redirect?{C:1}&{C:2}" appendQueryString="false" redirectType="Found" />
               </rule>
           </rules>
       </rewrite>
   </system.webServer>
</configuration>

此解決方案的唯一可能問題可能是(取決於您想要什麼)是重定向只會在查詢字元串中同時存在betagamma查詢字元串變數時發生。如果不是,則不會發生重定向。

重定向規則匹配任何 URL ( (.*))。如果需要,您可以更改它。我還添加了一個額外的條件,使規則不匹配重定向 URL 本身,否則會導致重定向 URL 本身被重定向。

引用自:https://serverfault.com/questions/372991