响应.重定向在IIS 7重写规则中停止工作
本文关键字:重写规则 停止工作 IIS 重定向 响应 | 更新日期: 2023-09-27 18:04:18
我最近将一个网站迁移到一台运行Windows server 2008的新服务器上,随后托管在IIS 7上。
我已经为页面实现了URL重写规则。下面是一个例子。
<rule name="RewriteUserFriendlyURL58" stopProcessing="true">
<match url="^(shop)/(item)/([^/]+)/([^/]+)/([^/]+)/?$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="shopitem.aspx?{R:1}&{R:2}&id={R:3}&cat={R:4}&title={R:5}" />
</rule>
URL应该看起来像这样。http://www.website.com/shop/item/10/products/table/
页面工作正常,除了当我点击按钮和运行此事件。
protected void btnAddToBasket_Click(object sender, EventArgs e)
{
Response.Redirect("~/shoppingbasket/");
}
重定向的结果似乎是重定向本身,然后URL更改为:http://www.website.com/shop/item/10/products/table/?shop&item&id=10&cat=products&title=table
谁能给我指个正确的方向?我对此做了一些搜索,但我似乎找不到任何东西这看起来就像是"哦,糟糕,我错过了!"这类问题,我们都有:)。
<action type="Rewrite" url="shopitem.aspx?{R:1}&{R:2}&id={R:3}&cat={R:4}&title={R:5}" />
你正在调用重写。把它改成重定向,我相信它会如你所愿。
值得注意的是,在事件中使用重定向和同时使用重写可能会在IIS中发生冲突。您可以选择其中之一我用下面的教程回答了这个问题。
我把下面的代码放在Page_Load事件的顶部。
if (!String.IsNullOrEmpty(Request.ServerVariables["HTTP_X_ORIGINAL_URL"]))
{
Form.Action = Request.ServerVariables["HTTP_X_ORIGINAL_URL"];
}
和页面现在正常工作