2

最近、WebサイトをWindows Server 2008を実行し、その後IIS7でホストされている新しいサーバーに移行しました。

ページの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

次のチュートリアルhereを使用して、この質問に答えました。

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 に答える
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 に答える