当前位置:编程学习 > asp >>

关于伪静态

  前段时间为客户做一个网站,这个网站还要优化,也是我们公司做,为了方便优化人员更好的,更快的让搜索引擎收录该网站,要不生成全站静态,要不就是写成伪静态,对于我一个新人来说,全站生成静态还没接触过,伪静态也没弄过。通过拜读网上各位大神的杰作,慢慢的对这些有了一定了解。生成全站静态,确实好,都说会占资源,还对硬盘损害大,那我就专注于伪静态了。
        通过请教一些高人,还有网上的资料,发现了伪静态的多种实现方法,不过都需要配置iis。通过高人的指点,自己感觉把正则写在Global.asax文件里还是比较舒服的,这样不用添加UrlRewrite组件,只用在iis中添加一个映射到.html的aspnet_isapi.dll就可以了,还是比较方便的。好了,闲话不多说,看看代码吧。
这里只是个人的一些方法,肯定还有许多好的方法来实现,希望大家都来发表一下自己的想法,共同学习一下。

首先建立一个解决方案,名称随意 ,根据个人爱好。这里是我做的测试。
然后新建两个.aspx文件,名称比如a.aspx,b.aspx。
然后在Global.asax文件中添加以下代码
[csharp] 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Security; 
using System.Web.SessionState; 
using System.Text.RegularExpressions; 
 
namespace URLReWrite1 

    public class Global : System.Web.HttpApplication 
    { 
 
        void Application_Start(object sender, EventArgs e) 
        { 
            // 在应用程序启动时运行的代码 
 
        } 
 
        void Application_End(object sender, EventArgs e) 
        { 
            //  在应用程序关闭时运行的代码 
 
        } 
 
        void Application_Error(object sender, EventArgs e) 
        { 
            // 在出现未处理的错误时运行的代码 
 
        } 
        protected void Application_BeginRequest(Object sender, EventArgs e) 
        { 
            Regex reg = new Regex(".+b-(\\d+)-(\\d+).html"); 
            var macth = reg.Match(HttpContext.Current.Request.Url.AbsolutePath); 
            if (macth.Success) 
            { 
                String uid = macth.Groups[1].Value; 
                String spid = macth.Groups[2].Value; 
                HttpContext.Current.RewritePath(String.Format("b.aspx?uid={0}&spid={1}", uid, spid)); 
            } 
        } 
        void Session_Start(object sender, EventArgs e) 
        { 
            // 在新会话启动时运行的代码 
           
        } 
 
        void Session_End(object sender, EventArgs e) 
        { 
            // 在会话结束时运行的代码。  
            // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为 
            // InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer  
            // 或 SQLServer,则不会引发该事件。 
 
        } 
 
    } 

 

然后在a.aspx文件里加一个超链接
[csharp]
<span style="font-size:18px;"> <h3><a href="b-123-111.html">测试</a></h3></span> 

好了,接下来就是需要配置一下iis了,为你的网站添加一个应用程序扩展名为.aspx。路径为C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll。
然后再添加一个扩展为.html,路径还是这个C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll。
还有版本要选择正确,这样就可以了,浏览刚才的测试网站,点击测试,跳转了。此时的url显示的是b-123-111.html。
这样就实现了简单的伪静态。希望大家多来指导,怎么添加一个虚拟目录。就是这个目录不存在,想要显示在url中,比如显示成a/b-123-111.html。期待学习大家的想法。

 

补充:Web开发 , ASP.Net ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,