0

SEO に適した URL の場合、ASP.Net 4.0 のルーティング機能を使用します。

URL www.mysite.com/ln=en-usのルートをwww.mysite.com/en-us/default.aspxに変更する方法を知っている人はいますか?

ありがとう

4

1 に答える 1

0

私はあなたが最初にこのクラスを作成するWebフォームで作業していると仮定します:

public class LangRouteHandler : IRouteHandler
{

    public System.Web.IHttpHandler GetHttpHandler(System.Web.Routing.RequestContext requestContext)
    {

        //Fill the context with the route data, just in case some page needs it
        foreach (var value_loopVariable in requestContext.RouteData.Values)
        {
            var value = value_loopVariable;
            HttpContext.Current.Items[value.Key] = value.Value;
        }

        string VirtualPath = null;
        VirtualPath = "~/" + requestContext.RouteData.Values["page"];// +".aspx";

        IHttpHandler redirectPage = default(IHttpHandler);

        redirectPage = (IHttpHandler)BuildManager.CreateInstanceFromVirtualPath(VirtualPath, typeof(Page));
        return redirectPage;

    }
}

Global.asax にこれを追加します。

public void Application_Start(object sender, EventArgs e)
    {
        // Code that runs on application startup
        RegisterRoutes(RouteTable.Routes);
    }


    public void RegisterRoutes(RouteCollection routes)
    {
        Route reportRoute = default(Route);
        string DefaultLang = "es";

        reportRoute = new Route("{lang}/{page}", new LangRouteHandler());
        //* if you want, you can contrain the values
        //reportRoute.Constraints = New RouteValueDictionary(New With {.lang = "[a-z]{2}"})
        reportRoute.Defaults = new RouteValueDictionary(new
        {
            lang = DefaultLang,
            page = "home"
        });

        routes.Add(reportRoute);
    }
于 2012-05-08T14:29:14.257 に答える