2

我最近将一个网站迁移到运行 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

谁能指出我正确的方向?我已经为此做了一些搜索,但似乎找不到任何东西。

4

2 回答 2

0

这看起来实际上是“哦,射击,我错过了!” 我们都有的问题类型:)。

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

您正在专门调用重写。将其更改为 Redirect,我相信它会按您的预期执行。

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

于 2013-03-16T14:21:20.343 回答
0

我在这里使用以下教程回答了这个问题。

我将以下代码放在 Page_Load 事件的顶部。

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

并且页面现在按预期工作。

于 2013-03-18T14:30:04.483 回答