Iis
IIS URL 重寫模組查詢字元串參數
是否可以使用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>
此解決方案的唯一可能問題可能是(取決於您想要什麼)是重定向只會在查詢字元串中同時存在
beta
和gamma
查詢字元串變數時發生。如果不是,則不會發生重定向。重定向規則匹配任何 URL (
(.*)
)。如果需要,您可以更改它。我還添加了一個額外的條件,使規則不匹配重定向 URL 本身,否則會導致重定向 URL 本身被重定向。