我正在尝试制作一个IIS URL重写规则,将URL参数附加到URL。 url参数为hssc
。因此,通过服务器处理的任何URL都需要该参数。请记住,一些网址已经拥有自己的参数,其他网址不会,根网址等,有时需要添加?hssc=1
或&hssc=
- 所以,如果我有这样的URL:
我还希望不要隐藏URL(如在后台重写幕后)。我需要在URL中显示URL,因此当用户复制URL或将其加入书签时,参数就在那里。
我已将条件设置为与\&hssc|\?hssc
匹配 - 现在我只需要一种方法来编写URL,因此它会显示并保留已存在的原始URL的一部分。
答案 0 :(得分:4)
想出来 - 规则将如下设置:
<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=|\&hssc=" negate="true" />
</conditions>
</rule>
</rules>
</rewrite>
答案 1 :(得分: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;
}
我刚从Url-Rewrite和QS中的一个类似于你的项目中复制了这个
希望这个帮助