2

我有一个网站,我们使用的是 ASP.NET 4.0,现在我们的产品内容是这样管理的

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

其中查询字符串系列是产品 ID,因此取其值,然后从数据库中提取内容。

现在出于 SEO 的原因,我们被要求更改网址,所以现在它们必须看起来像这样:

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 一样轻松地为 WebForms 使用路由。

您需要向 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...
}

您的网址最终将如下所示:

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

ETC..

又好又容易……而且干净!

于 2012-08-23T18:21:54.577 回答
0

URL 重写正是为了这个目的。问题是它确实不适用于直接附加到根 URL 的变量内容。对于 URL 路由,确实没有足够的信息将这些 URL 与您的其余 URL 分开。

你的老板会接受 www.franko1.com/p/Relief_Valve 吗?

于 2012-08-23T18:22:52.393 回答