响应.重定向在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}&amp;{R:2}&amp;id={R:3}&amp;cat={R:4}&amp;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

谁能给我指个正确的方向?我对此做了一些搜索,但我似乎找不到任何东西

响应.重定向在IIS 7重写规则中停止工作

这看起来就像是"哦,糟糕,我错过了!"这类问题,我们都有:)。

<action type="Rewrite" url="shopitem.aspx?{R:1}&amp;{R:2}&amp;id={R:3}&amp;cat={R:4}&amp;title={R:5}" />

你正在调用重写。把它改成重定向,我相信它会如你所愿。

值得注意的是,在事件中使用重定向和同时使用重写可能会在IIS中发生冲突。您可以选择其中之一

我用下面的教程回答了这个问题。

我把下面的代码放在Page_Load事件的顶部。

if (!String.IsNullOrEmpty(Request.ServerVariables["HTTP_X_ORIGINAL_URL"])) 
{ 
     Form.Action = Request.ServerVariables["HTTP_X_ORIGINAL_URL"]; 
}

和页面现在正常工作