zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    php mysql与mysqli 区别
    让IT工作者过度劳累的12个坏习惯
    HR不懂爱,他的问题答不上来
    励志小故事
    php中如何把一个数字字符串作为一个变量
    新手应该具备的基本素质
    邮件中的缩写
    强大的网页性能测试工具Speed Tracer
    Windows环境下EditPlus运行Perl程序
    ActionScript3检测当前下载资源的速度
  • 原文地址:https://www.cnblogs.com/xuhongfei/p/3068325.html
Copyright © 2011-2022 走看看