簡體   English   中英

IIS URL重寫不使用查詢字符串

[英]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時它不會重定向。 有什么想法嗎?

Microsoft的文檔中所述

了解如何從重寫規則訪問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.

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