asp.net url静态化的两种方式
很多的SEO学习资料中都讲到,目录的权重要比页面的高。比如http://www.591gu.com/report_673434_002299/这个目录,权重会高于 http://www.591gu.com/showreport.aspx?id=673434&code=002299。因此如果我们能将页 面尽量目录化,对于提高排名是有些帮助的。例如wordpress就提供了这类的功能。那么,我们怎么在aps.net中实现url静态化呢?有两种方 式:
一、利用ISAPI_rewrite。
ISAPI_rewrite的网址:www.isapirewrite.com 。到其主页下载ISAPI_Rewrite.ISAPI_Rewrite精简版(Lite)或完全版(Full)。精简版不支持对每个虚拟主机站点进行重写,只能进行全局处理。
下载完毕后,执行安装。安装完毕后,打开IIS,在“ISAPI筛选器选项卡”中,添加筛选器。名称任意填,路径选择ISAPI_Rewrite.dll的安装目录,然后确定。
最后一步,添加urlrewrite规则。打开ISAPI_Rewrite的安装目录,将httpd.ini文件的只读属性去掉。用记事本软件将其 打开。假设我们要把http://www.591gu.com/showreport.aspx?id=673434&code=002299映 射成为http://www.591gu.com/report_673434_002299/,需要在httpd.ini里加入下面行代码即可:
RewriteRule /report_([0-9,a-z]*)_([0-9,a-z]*)/showreport.aspx?id=$1&code=$2
二、自己写UrlRewriter代码。
假设我们需要将http://www.591gu.com/showlfb.aspx?id=56406,静态化成http://www.591gu.com/lfb_56406/。首先在项目的根目录下添加一个UrlRewriter.cs的类,代码如下:
using System;
using System.Collections.Generic;
using System.Web;
using System.Text.RegularExpressions;namespace SiteSense.Web.Components
{
public class UrlRewriter : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
try
{
string url = context.Request.RawUrl;
if (url.IndexOf(“report”) > 0)
{
Regex Reg = new Regex(@”/report_(\d+)_(\d+)/?”, RegexOptions.IgnoreCase);
Match m = Reg.Match(url);
if (m.Success)//匹配成功
{
string RealPath = @”~/ShowReport.aspx?id=” + m.Groups[1] + “&code=” + m.Groups[2];
context.Server.Execute(RealPath);
}
else
context.Response.Redirect(context.Request.Url.ToString());
}
else if (url.IndexOf(“lfb”) > 0)
{
Regex Reg = new Regex(@”/lfb_(\d+)/?”, RegexOptions.IgnoreCase);
Match m = Reg.Match(url);
if (m.Success)//匹配成功
{
string RealPath = @”~/ShowLFB.aspx?id=” + m.Groups[1];
context.Server.Execute(RealPath);
}
else
context.Response.Redirect(context.Request.Url.ToString());
}
else
context.Response.Redirect(context.Request.Url.ToString());
}
catch
{
context.Response.Redirect(context.Request.Url.ToString());
}
}public bool IsReusable
{
get { return false; }
}
}
}
然后在web.config的<system.web>下的httpHandlers节点里面,加入以下代码:
<httpHandlers>
<add verb=”*” path=”*/lfb_?*” type=”SiteSense.Web.Components.UrlRewriter”/>
<add verb=”*” path=”*/lfb_?*/*” type=”SiteSense.Web.Components.UrlRewriter”/>
</httpHandlers>
即可实现url静态化。