全速加载中

asp.net实现伪静态的几种常用的方法

实现伪静态的主要作用是有利于SEO。

常用的有以下几种方法:

 第一种是在配置文件中进行配置,方法如下:

第一步:下载UrlRewrite

第二步:将bll文件引用到项目中去。

第三步:开始在配置文件中进行配置信息

 1.现在<configuration>标签下添加如下代码:(注意下面的代码必须放到<configuration>标签的第一个子位置)

<configSections>
    <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter"/>
  </configSections>

  2.在 <system.web>标签下添加如下代码

<httpHandlers>
        <add  verb ="*"  path ="*.aspx"  type ="URLRewriter.RewriterFactoryHandler, URLRewriter" />
        <add  verb ="*"  path ="*.html"  type ="URLRewriter.RewriterFactoryHandler, URLRewriter" />
      </httpHandlers>

  3.在</configuration>前添加如下代码

<RewriterConfig>
    <Rules>  
      <RewriterRule>
        <LookFor>~/bdt.([\d]*).html</LookFor>
        <SendTo>~/bdt.aspx?page=$1</SendTo>
      </RewriterRule>
      <RewriterRule>
        <LookFor>~/default.html</LookFor>
        <SendTo>~/default.aspx</SendTo>
      </RewriterRule>
    </Rules>
  </RewriterConfig>

  4、根据自己的需要在第三步的时候进行自行配置

    其中有参数的要用到正则表达式:

            (.*):应用于根目录下所有页面;

            $1:与(.*)对应,也就是url显示的是什么对应的就是哪个aspx,如index.html对应index.aspx

          有时候我们需要多个参数,可以使用下面的方法 

< RewriterRule >
     < LookFor > ~/ProductClassList-(.[0-9][0-9][0-9]*)-(.*).html </ LookFor >
      < SendTo > <![CDATA[ ~/productclasslist.aspx?cn=$1&c=$2 ]]> </ SendTo >
</ RewriterRule >   

    $1:对应第一个(.*)

    $2:对应第二个(.*)

    $3:对应第三个(.*)

    $4:对应第四个(.*)

< RewriterRule >
    
< LookFor > ~/ProductClassList-(.[0-9][0-9][0-9]*)-(.*).html </ LookFor >
     
< SendTo > <![CDATA[ ~/productclasslist.aspx?cn=$1&c=$2 ]]> </ SendTo >
</ RewriterRule >

  至此,使用配置文件实现伪静态的方法就已经完成。

下面来谈谈使用另外一种方法实现伪静态:

 在asp.net的全局文件(Global.asax)中进行设置

  在Application_BeginRequest事件的响应代码中做处理。每一次请求都会调用此方法(包括请求CSS或者JS代码)

  修改后的代码如下

 protected void Application_BeginRequest(object sender, EventArgs e)
        {
            string oldUrl = HttpContext.Current.Request.RawUrl;//获取接收到的URL
            string pattern = @"^(.+)Default-(\d+).html";//匹配字符串
            string replace = "$1Default.aspx?id=$2";//要替换的网页
            if (Regex.IsMatch(oldUrl, pattern, RegexOptions.IgnoreCase | RegexOptions.Compiled))
            {
            string newUrl = Regex.Replace(oldUrl,pattern, replace,RegexOptions.Compiled | RegexOptions.IgnoreCase);
             this.Context.RewritePath(newUrl);
           }
        }

后台处理代码:

 protected void Page_Load(object sender, EventArgs e)
        {
            if (null != Request.QueryString["id"])
            {
                Response.Write("id=" + Request.QueryString["id"].ToString());
            }
            else
            {
                Response.Write("id为空");
            }

        }

运行效果:

还有一种是IIS筛选器来进行重定向:

具体实现如下:

1、下载IISUrlRewriter组件(见附件)。然后在UrlRewriter.ini中配置访问规则。如:

  RewriteRule ^(.*)/index\.html$  $1/index.aspx
      RewriteRule ^(.*)/products/([0-9]+)\.html$  $1/GoodsDetail.aspx?id=$2

      新规则直接增加即可。

2、打开IIS管理,右击站点属性,打开ISAPI筛选器标签。见下图。

3、添加ISAPI筛选器。

4、确定。然后重启IIS。

 

 

 

 

posted @ 2013-05-09 09:38  许鸿飞  阅读(2272)  评论(0编辑  收藏  举报