C# 伪静态

伪静态技术

  1. 什么是伪静态?
    伪静态网页本身还是动态网页,例如以.aspx.asp.php等为后缀的网页,这些网页是动态网页
    而伪静态网页则是经过转换重写,将地址改写成以.html.shtml.htm等为后缀,此时我们把这些网页称为伪静态网页

  2. 伪静态网页有什么作用?
    设计使用伪静态网页,主要是考虑到搜索引擎优化SEO(Search Engine Optimization)
    (现阶段静态网页和动态网页对搜索引擎优化的提升已不是那么明显,而更在于用户体验,显而易见,动态网页的体验比静态更加优秀)

  3. 伪静态的弊端
    伪静态网页的使用会增加对服务器CPU的开销,伪静态的路由首先要经过正则表达式判断,然后才能跳转到相应网页,这一过程增加了对cpu的消耗,这也是伪静态最大的弊端

  4. 伪静态的优点
    第一个便是伪静态网页增强搜索引擎优化
    其次伪静态网页因重写改造URL地址,导致我们所看到的地址和真实地址不同,增强了网站的安全性

  5. 伪静态如何使用
    C#:
    方法一:使用微软提供的URLRewriter.dll
    (1)下载地址:http://www.downcc.com/file/238720.html
    (2)添加对URLRewriter.dll的引用
    (3)在web.config文件中,configuration节点下添加

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

(4)在system.web节点下添加以下代码

<compilation>
      <buildProviders>
        <add extension=".html" type="System.Web.Compilation.PageBuildProvider"/>
      </buildProviders>
    </compilation>
<httpHandlers>
      <add verb="*" path="*.html" type="System.Web.UI.PageHandlerFactory"/>
    </httpHandlers>
    <httpModules>
      <add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter"/>
    </httpModules>

(5)配置路由规则

<RewriterConfig>
    <Rules>        
      <RewriterRule>
        <LookFor><![CDATA[~/shop/(\w+)?]]></LookFor><!--页面显示-->
        <SendTo><![CDATA[~/vshop/wechat/order/index.aspx?uid=$1]]></SendTo><!--后台路由-->
      </RewriterRule>      
      <RewriterRule>
        <LookFor><![CDATA[~/tupian/(\d+)/.html]]></LookFor><!--页面显示-->
        <SendTo><![CDATA[~/web/admin/other/$1.ashx]]></SendTo></SendTo><!--后台路由-->
      </RewriterRule>        
    </Rules>
  </RewriterConfig>

方法二:.net3.5以上版本,可以通过实现IRouteHandler接口,自己实现伪静态
例:新建文件ReWriteUrl.cs

public class ReWriteUrl : IRouteHandler
    {
        public string UrlRote
        {
            get;
            private set;
        }
        public ReWriteUrl (string sUrlRote)
        {
            UrlRote = sUrlRote;
        }
        public IHttpHandler GetHttpHandler(RequestContext requestContext)
        {
            return BuildManager.CreateInstanceFromVirtualPath(UrlRote, typeof(IHttpHandler)) as IHttpHandler;
        }
    }

在Global.asax.cs文件下的Application_Start函数里

protected void Application_Start(object sender, EventArgs e)
{
	RouteTable.Routes.Add( new Route("xxxx.html", new ReWriteUrl("~/xxxx.ashx")));//地址重写
}

欢迎指正,欢迎批评!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风一样的虞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值