2012-09-28 31 views
2

我試圖製作一個IIS URL重寫規則,將URL參數附加到URL。 url參數是hssc。因此,通過服務器處理的任何url都需要該參數。請記住,有些網址已經有自己的參數了,其他網址不會和根網址等,有時需要添加?hssc=1&hssc= - 所以,如果我有這樣的網址:IIS重寫規則檢查查詢字符串,並添加它,如果它不存在

我也希望它的URL不應該被隱藏(如在幕後後端重寫)。我需要URL出現在URL中,所以當用戶複製URL或書籤時,參數就在那裏。

我已經設置了匹配它的條件\&hssc|\?hssc - 現在我只需要一種編寫URL的方法,它就會顯示並保留已存在的原始URL部分。

回答

3

想通了 - 規則將如此設置:

<rewrite> 
      <rules> 
       <rule name="sigh" patternSyntax="ECMAScript" stopProcessing="true"> 
        <match url="(.*)" negate="false" /> 
        <action type="Redirect" url="{PATH_INFO}?hssc=1" /> 
        <conditions> 
         <add input="{QUERY_STRING}" pattern="^hssc=|\?hssc=|\&amp;hssc=" negate="true" /> 
        </conditions> 
       </rule> 
      </rules> 
     </rewrite> 
0

 

只是作爲一個提示通過代碼來維持QS:

public static string GetQS() 
{ 
    var sb = new System.Text.StringBuilder(); 

    System.Collections.Specialized.NameValueCollection Qs = HttpContext.Current.Request.QueryString; 

    var lst = new List<string>(Qs.AllKeys); 

    foreach (string s in lst) 
    { 
    if (s == "MyOwnQSKey") 
     sb.Append(s + "=" + "MyValue" + "&"); 
    else 
     sb.Append(s + "=" + Qs[s] + "&"); 
    } 

    if (!lst.Contains("MyOwnQSKey")) 
    sb.Append("MyOwnQSKey=MyValue&"); 

    if (sb.ToString().EndsWith("&")) 
    sb.Remove(sb.Length - 1, 1); 

    return "?" + sb; 
} 

我只是複製這個從我的項目,類似於你在網址重寫之一,QS

希望這個幫助

 

+0

這與我所問的相關? –

+0

對於複雜情況,我建議以編程方式使用urlrewrite規則。這將爲您提供很多靈活性。 您可以創建一個至少包含兩個方法的類:一個用於在頁面中創建鏈接,另一個用於在Application_BeginRequest事件中重新編寫url。 開發人員擁有個人圖書館和框架總是有好處的。 –

+0

它並不是一個複雜的情況。我只想添加一個靜態url參數。 –

相關問題