我有一个网站,我们正在使用ASP.NET 4.0,现在我们的产品内容就像这样管理
www.franko1.com/products.aspx?serie=2000
其中查询字符串 serie 是产品ID,因此将获取其值,然后从数据库中提取内容。
现在出于搜索引擎优化的原因,我们被要求更改网址,所以现在他们必须看起来像这样:
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,正如我所说,我们采用querystring系列,我们根据其值显示内容,我不知道如何使用asp.net,我已阅读 ISAPI_Rewrite ,但我想知道是否有一种技术可以在不处理IIS服务器的情况下解决这个问题....
嗯,我不知道我是否清楚,很难解释,
答案 0 :(得分:4)
没必要。你可以通过routing实现这个目标(这不仅仅适用于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_Valves
www.domain.com/products/Widgets
www.domain.com/products/TrashCans
等。
美好而轻松......干净!
答案 1 :(得分:0)
网址重写仅仅是为了这个目的。问题是它实际上不适用于直接附加到根URL的变量内容。实际上,没有足够的URL路由信息可以将这些URL与其他URL分开。
你的老板会接受www.franko1.com/p/Relief_Valves吗?