![](/img/trans.png)
[英]IIS url rewrite one folder and subcontent to another domain with query string
[英]IIS URL Rewrite not working with query string
我認為這很簡單,但它拒絕工作。 舊的URL是
http://www.site.com/?q=node/17
它需要重定向到http://www.site.com 。 我不需要擔心通配符,這是我唯一需要擔心的查詢字符串參數。 我寫的規則看起來像
<rule name="Node17" patternSyntax="ExactMatch" stopProcessing="true">
<match url="http://www.site.com/?q=node/17" />
<action type="Redirect" url="http://www.site.com" appendQueryString="False" />
</rule>
我可以測試IIS內部的模式並匹配,但是當我在瀏覽器中點擊URL時它不會重定向。 有什么想法嗎?
了解如何從重寫規則訪問URL字符串的某些部分非常重要。
對於此格式的HTTP URL:http(s):// {host}:{port} / {path}?{querystring}
{path}與規則的模式匹配。 {querystring}在名為QUERY_STRING的服務器變量中可用,可以使用規則中的條件進行訪問。
規則條件允許為規則評估定義附加邏輯...在規則模式匹配成功后評估規則條件。
在您希望重寫為重定向的網址中,您的{host} = "www.site.com"
, {path} = ""
和{querystring} = "q=node/17"
。 因此,您要重定向的網址中的{path}
部分實際上是空的,並且您在問題中使用的規則與之匹配且不匹配。
你的解決方案確實有效,所以我在這里引用它:
<rule name="Node17" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{QUERY_STRING}" pattern="q=node/17" />
</conditions>
<action type="Redirect" url="http://www.example.com" appendQueryString="False" />
</rule>
當然,我發布后不久便想出來了。 這樣做,不確定為什么完全匹配不起作用。
<rule name="Node17" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{QUERY_STRING}" pattern="q=node/17" />
</conditions>
<action type="Redirect" url="http://www.site.com" appendQueryString="False" />
</rule>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.