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

关于伪静态

2013年02月16日 ⁄ 综合 ⁄ 共 1860字 ⁄ 字号 评论关闭

        前段时间为客户做一个网站,这个网站还要优化,也是我们公司做,为了方便优化人员更好的,更快的让搜索引擎收录该网站,要不生成全站静态,要不就是写成伪静态,对于我一个新人来说,全站生成静态还没接触过,伪静态也没弄过。通过拜读网上各位大神的杰作,慢慢的对这些有了一定了解。生成全站静态,确实好,都说会占资源,还对硬盘损害大,那我就专注于伪静态了。

        通过请教一些高人,还有网上的资料,发现了伪静态的多种实现方法,不过都需要配置iis。通过高人的指点,自己感觉把正则写在Global.asax文件里还是比较舒服的,这样不用添加UrlRewrite组件,只用在iis中添加一个映射到.html的aspnet_isapi.dll就可以了,还是比较方便的。好了,闲话不多说,看看代码吧。

这里只是个人的一些方法,肯定还有许多好的方法来实现,希望大家都来发表一下自己的想法,共同学习一下。

首先建立一个解决方案,名称随意 ,根据个人爱好。这里是我做的测试。

然后新建两个.aspx文件,名称比如a.aspx,b.aspx。

然后在Global.asax文件中添加以下代码

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文件里加一个超链接

 <h3><a href="b-123-111.html">测试</a></h3>


好了,接下来就是需要配置一下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。期待学习大家的想法。

抱歉!评论已关闭.