我最近将一个网站迁移到运行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>
网址应如下所示。 http://www.website.com/shop/item/10/products/table/
页面工作正常,除非我点击按钮并运行此活动。
protected void btnAddToBasket_Click(object sender, EventArgs e)
{
Response.Redirect("~/shoppingbasket/");
}
重定向的结果似乎是重定向,然后网址会更改为:http://www.website.com/shop/item/10/products/table/?shop&item&id=10&cat=products&title=table
有人能指出我正确的方向吗?我已经为此做了一些搜索,但我似乎找不到任何东西。
答案 0 :(得分:0)
这看起来实际上是“哦拍,我错过了!”我们都有的问题类型:)。
<action type="Rewrite" url="shopitem.aspx?{R:1}&{R:2}&id={R:3}&cat={R:4}&title={R:5}" />
你专门打电话给Rewrite。将其更改为重定向,我确信它会按预期执行。
值得注意的是,在事件中使用重定向和结合重写可能在IIS中存在冲突。您可能想要选择其中一个。
答案 1 :(得分:0)
我使用以下教程here回答了这个问题。
我将以下代码放在Page_Load事件的顶部。
if (!String.IsNullOrEmpty(Request.ServerVariables["HTTP_X_ORIGINAL_URL"]))
{
Form.Action = Request.ServerVariables["HTTP_X_ORIGINAL_URL"];
}
,页面现在按预期工作。