我必须关注网址:
http://example.org/sessionstuff/kees/view.aspx?contentid=4&itemid=5
它需要重写,因此它将转到:
http://example.org/sessionstuff/view.aspx?site=kees&contentid=4&itemid=5
基本上它会kees
取值并将其作为site
参数。我正在使用在我的 web.config 中使用规则的 IIS URL 重写模块。我已将以下代码添加到我的 web.config:
<rule name="RedirectSite" stopProcessing="true">
<match url="^(\D[^/]*)/(.*)$" />
<action type="Rewrite" url="{R:2}?site={R:1}" />
</rule>
一切正常,但是当我进行回发时,site
参数加倍。我已经通过在我的 .aspx 页面上使用以下代码对此进行了测试:
<h3>Querystring</h3>
<ul>
<% foreach (string key in Request.QueryString.Keys)
Response.Write(String.Format("<li><label>{0}:</label>{1}</li>", key, Request.QueryString[key])); %>
</ul>
<asp:Button runat="server" Text="Postback" />
第一次
Querystring
site: kees
contentid: 4
itemid: 5
第二次
Querystring
site: kees, kees <--- double
contentid: 4
itemid: 5
如何防止site
参数自我复制?每个回发都会增加另一个值。
注意:其他查询参数必须存在,因此使用appendQueryString="false"
似乎不是一个选项。