带参数的URL地址进行改写,改写成不带参数的。
BookDetaile.aspx?id=2; 改成 BookDetail_2.aspx
为什么将带参数的URL的地址改成不带参数的?URL重写的目的就是SEO
SEO:SEO是由英文Search Engine Optimization缩写而来, 中文意译为“搜索引擎优化”。SEO是指通过站内优化比如网站结构调整、网站内容建设、网站代码优化等以及站外优化,比如网站站外推广、网站品牌建设等,使网站满足搜索引擎收录排名需求,在搜索引擎中提高关键词排名,从而吸引精准用户进入网站,获得免费流量,产生直接销售或品牌推广。
<TR>
<TD rowSpan=2><A href='<%#Eval("Id","/BookDetail_{0}.aspx") %>' "><IMG
style="CURSOR: hand" height="121" border="0"
alt='<%#Eval("Title") %>' hspace="4"
src='<%#Eval("ISBN","/Images/BookCovers/{0}.jpg") %>' width=95></A> </TD>
<TD style="FONT-SIZE: small; COLOR: red" width=650><A
class="booktitle" id="link_prd_name"
href='<%#Eval("Id","/BookDetail_{0}.aspx") %>' target=_blank
name=link_prd_name><%#Eval("Title") %>
</A> </TD></TR>
在请求管道第八个之前,在一个就行了,即在Global.asax文件中:
/// <summary>
/// 请求管道中第一个事件触发以后调用的方法,完成URL重写
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Application_BeginRequest(object sender, EventArgs e)
{
string url = Request.AppRelativeCurrentExecutionFilePath;//~/BookDetail_5011.aspx
Match math= Regex.Match(url,@"~/BookDetail_(\d+).aspx");
if(math.Success)
{
Context.RewritePath("/BookDetail.aspx?id=" + math.Groups[1].Value);//从1开始
}
//如果是多个的话 及直接往后面写就行了
//Match math = Regex.Match(url, @"~/BookDetail_(\d+).aspx");
//if (math.Success)
//{
// Context.RewritePath("/BookDetail.aspx?id=" + math.Groups[1].Value);//从1开始
//}
}