2

私はサイトを持っており、ASP.NET 4.0 を使用しています。現在、製品のコンテンツは次のように管理されています。

www.franko1.com/products.aspx?serie=2000

ここで、クエリ文字列シリーズは製品 ID であるため、その値が取得され、コンテンツがデータベースから抽出されます。

SEO の理由から、URL を変更するよう求められたため、次のようにする必要があります。

What the boss want                    | Current Urls
--------------------------------------------------------------------------------
www.franko1.com/Relief_Valves         | www.franko1.com/products.aspx?serie=2000
www.franko1.com/Inline_Flame_Arrester | www.franko1.com/products.aspx?serie=1000
www.franko1.com/Vent_Hatch            | www.franko1.com/products.aspx?serie=3000

等々 ...

現在、マスターページとproducts.aspxを使用しています。前述のように、クエリ文字列シリーズを取得し、その値に基づいてコンテンツを表示します.asp.netを使用してこれを行う方法がわかりません. ISAPI_Rewriteですが、IISサーバーを扱わずにこれにアプローチするテクニックがあるかどうか疑問に思っていました....

わかりやすかったかどうかわかりませんが、説明するのは難しいです。

4

2 に答える 2

4

その必要はありません。これは、ルーティングを介して実現できます(MVC だけではありません)。

ルーティングは、しばらくの間スタンドアロン モジュールとして利用できましたが、ASP.Net 4.0 では、MVC と同じように簡単に Web フォームのルーティングを使用できるようになりました。

Global.asax にルーティングを追加する必要があります。

public class Global : System.Web.HttpApplication
{

    protected void Application_Start(object sender, EventArgs e)
    {
        RegisterRoutes(RouteTable.Routes);
    }

    public static void RegisterRoutes(RouteCollection routeCollection)
    {
        routeCollection.MapPageRoute("Products", "Products/{Name}", "~/Products.aspx");
    }

}

これで、ページ内のルート値を次のように参照できるようになりました。

protected void Page_Load(object sender, EventArgs e)
{
    string prodName = Page.RouteData.Values["Name"].ToString();

    //Do lookup, etc...
}

URL は次のようになります。

www.domain.com/products/Relief_Valves
www.domain.com/products/Widgets
www.domain.com/products/TrashCans

等..

素敵で簡単...そしてきれい!

于 2012-08-23T18:21:54.577 に答える
0

URL の書き換えは、まさにこの目的のために行われました。問題は、ルート URL に直接追加された可変コンテンツでは実際には機能しないことです。URL ルーティングがそのような URL を残りの URL から分離するには、実際には十分な情報がありません。

あなたの上司は www.franko1.com/p/Relief_Valves を受け入れますか?

于 2012-08-23T18:22:52.393 に答える