现在的位置: 首页 > 综合 > 正文

SEO实战之:URL重写实现动态页面静态化

2013年08月13日 ⁄ 综合 ⁄ 共 4361字 ⁄ 字号 评论关闭

http://www.shareb2c.com/b2c-artical-27

 

早就想将我们的网站实现静态化,但是由于涉及到整体网站的修改,工作量巨大,需要较长时间,一直拖到现在。趁着我们进入淡季,终于把这件事完成了。

静态化对于SEO的意义在于,搜索引擎对链接中的问号,“&”号等比较感冒,因此不利于搜索引擎对这些网页的收录,而且也会不计入内链数
量。据说google等正在改进对动态链接的支持,我没有考证过。不过考虑到毕竟不止有google一个搜索引擎,静态化的工作还是必须的。

静态化当然还有客户界面更友好等优点,此处就不多详述了。

实现静态化有很多技术,比如套模板的方法,但是后期维护工作将十分麻烦。

最终,我还是选择了方便的伪静态化技术,即URL rewrite(URL重写)。毕竟,我的目的只是seo。所谓伪静态化,就是访问者和搜索引擎看不到问号和和号等了,但实际上页面还是动态的。 

经比较试验,选用了UrlRewriting.Net(我的网站基于.Net的 www.shirtonline.cn)。下载地址: http://www.urlrewriting.net/155/de/downloads.html

使用起来也很方便,只要把dll文件放入bin目录,然后在web.config中做好相应配置即可。主要是这几段:

在<configuration>节点内加入 

<!-- for url rewritingnet-->

 <configSections>     

    <section name="urlrewritingnet"
requirePermission ="false"
type="UrlRewritingNet.Configuration.UrlRewriteSection,
UrlRewritingNet.UrlRewriter" />

  </configSections>

<!-- end for url rewritingnet-->

在<system.web>节点内加入

<!-- for url rewritingnet-->

    <httpModules>

      <add name="UrlRewriteModule" type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter" />

</httpModules>

<!-- end for url rewritingnet-->

还是在<configuration>节点内加入(放在前面的configsections之后)

<!-- for url rewritingnet-->

  <urlrewritingnet rewriteOnlyVirtualUrls="true" contextItemsPrefix="QueryString"  defaultPage = "index.aspx" defaultProvider="RegEx" xmlns="http://www.urlrewriting.net/schemas/config/2006/07" >

    <rewrites>

<add name="RewriteRule1"
 virtualUrl="^~/(/d+).aspx"
 rewriteUrlParameter="ExcludeFromClientQueryString"
 destinationUrl="~/Default.aspx?ID=$1"
 ignoreCase="true" />

<add name=" RewriteRule2"
   virtualUrl="^~/website /(.*)/default.aspx"           

     rewriteUrlParameter="ExcludeFromClientQueryString"

     destinationUrl="~/website /default.aspx?id=$1"

     ignoreCase="true" />

    </rewrites>

  </urlrewritingnet>

  <!--end for url rewritingnet-->

上面每个 <add>都是一个重写规则,你可以根据自己的要求增加规则。

你可以实现四种重写

1、扩展名不变,如

<add name="RewriteRule1"
 virtualUrl="^~/(/d+).aspx"
 rewriteUrlParameter="ExcludeFromClientQueryString"
 destinationUrl="~/Default.aspx?ID=$1"
 ignoreCase="true" />

重写的结果是,把 类如  default.aspx?id=123456 的链接转换成 123456.aspx

 <add name=" RewriteRule2"
   virtualUrl="^~/website /(.*)/default.aspx"           

     rewriteUrlParameter="ExcludeFromClientQueryString"

     destinationUrl="~/website /default.aspx?id=$1"

     ignoreCase="true" />

重写的结果是,把 类如  website/default.aspx?id=123456 的链接转换成 website/123456/default.aspx

这类重写在IIS上不必有其他设置,默认设置即可。有的虚拟主机可能需要被服务商修改过,则需进行如下设置:

网站管理->属性->目录->配置(G
)...->映射->应用程序扩展->扩展名 .aspx ->编辑->"确认文件是否存在"复选框不选

2、把aspx重写成html

<add name="RewriteRule3"

virtualUrl="^~/(/d+).html"
     rewriteUrlParameter="ExcludeFromClientQueryString"
     destinationUrl="~/Default.aspx?ID=$1"
     ignoreCase="true" />

重写的结果是,把 类如  default.aspx?id=123456 的链接转换成 123456.html

需要在IIS配置如下:

网站->属性->目录->配置(G
)...->映射->应用程序扩展->添加
可执行文件:c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll
扩展名:.html
动作:限制为 GET,HEAD,POST,DEBUG
脚本引擎:选中
确认文件是否存在:不选

3、任意扩展名重写

<add name="RewriteRule4"
virtualUrl="^~/(/d+).myname"
rewriteUrlParameter="ExcludeFromClientQueryString"
destinationUrl="~/Default.aspx?ID=$1"
ignoreCase="true" />

重写的结果是,把 类如  default.aspx?id=123456 的链接转换成 123456.myname

IIS配置和重写成html一样。

4、重写成路径

<add name="RewriteRule5"
virtualUrl="^~ /(.+) "
rewriteUrlParameter="ExcludeFromClientQueryString"
destinationUrl="~/Default.aspx?ID=$1"
ignoreCase="true" />

重写的结果是,把 类如  default.aspx?id=123456 的链接转换成 /123456

 IIS配置:网站->属性->目录->配置(G
)...->映射->通配符应用程序映射->插入
可执行文件:c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll
确认文件是否存在:不选
如图:
URL重写实现动态页面静态化,达到SEO搜索引擎优化目的

注释:  在IIS7
下面,重写成路径,即无扩展名的重写设置如下 (参考 http://www.improve.dk/blog/2006/12/11/making-url-rewriting-on-iis7-work-like-iis6

1、 进入iis7管理界面的  “处理程序映射”,找到  StaticFile ,进入编辑,将* 改为 *.*  ,将 “请求限制”中的 “文件或文件加” 改选为 “文件”

2、点击右侧 “添加脚本映射”,请求路径为 * , 可执行文件填入 
%windir%/Microsoft.NET/Framework/v2.0.50727/aspnet_isapi.dll       
,“请求限制”中,去除 “仅当请求映射至.....”选项,自己取名字,如"all"   。确定保存

3、点击右侧“查看经过排序的列表”,将刚才添加的 "all"  下移至 StaticFile 下面

以上三步即可

另:在iis7中,必须使用 “经典应用程序池” 才可以实现url的重写。

 

如果有多个参数,请参考如下例子,

<add name=" RewriteRule6"
  virtualUrl="^~/website/(.*)/(.*)/(.*)/default.aspx"
  rewriteUrlParameter="ExcludeFromClientQueryString"
  destinationUrl="~/website/default.aspx?id1=$1&amp;id2=$2&amp;id3=$3"
  ignoreCase="true" />

上面 (.*)/(.*)/(.*) 的顺序为依次 id1,  id2,  id3

重写的结果是,把 类如  website/default.aspx?id1=12&id2=34&id3=56 的链接转换成 website/12/34/56/default.aspx

以上规则涉及到正则表达式
写法。请搜索参考正则表达式教程。

本人网站对关键页面都实现了重写,对用户帐户网页,则没有重写,省去部分工作量,呵呵。

 

另外,重写会占用服务器资源,尤其是该写成纯路径形式(上诉第4类重写),会对每个图片都进行重定向,网上有解决方案。本人没有试验,读者可去搜索一下。

 

如果仅出于seo目的,那么,不必非把aspx改写成html,因为目前各主要搜索引擎对aspx和html的支持度是一样的。把问号,&号等去掉就可以了。但最好改写成纯路径方式,因为对搜索引擎来说,路径的权重高于文件的权重。

 

 

欢迎交流。

【上篇】
【下篇】

抱歉!评论已关闭.