C#如何实现无扩展名目录式重写!

来源:互联网 发布:淘宝创业故事视频 编辑:程序博客网 时间:2024/06/04 01:22

  最近公司做了一个网站,为了讨好搜索引擎,好多地方在开发的时候都多走了好多路,最重要的就是地址的无扩展名目录式重写。起初我也不会,上网上资料吧,好家伙这资料写的一个比一个云山雾罩。费了好半天力气才搞定,等搞定了才知道多么的Easy~!于是我决定写博,把这个技术写出来,希望初学者不要像我一样走弯弯~!

  好了,不多说了,开始~!

 首先说一下我们要把什么样的页面重写成什么样的页面

 就是把www.url.com/text.aspx?id=123重写成www.url.com/123/或www.url.com/123

 1。网站引用两个DLL URLRewriter.dll(重写用的DLL,地球人都知道了)和ActionlessForm.dll(处理回发的DLL,具体下面会说到)

 URLRewriter.dll下载地址:http://download.csdn.net/source/1929567

 ActionlessForm.dll下载地址:http://download.csdn.net/source/1929569

2.配置IIS

  你的网站--属性--主目录--配置--插入--C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/aspnet_isapi.dll  将文件是否存在勾掉

  具体其它配置根据自己的需求而定!

3.web.config的配置,如下:

  <configuration>节点下:

  <configSections>
        <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter"/>
    </configSections>
    <RewriterConfig>
        <Rules>
            <!-- 新闻 -->
            <RewriterRule>
                <LookFor>~/([0-9]*)</LookFor>
                <SendTo><![CDATA[~/.aspx?txt=$1]]></SendTo>
            </RewriterRule>
            <RewriterRule>
                <LookFor>~/[0-9]*)/</LookFor>
                <SendTo><![CDATA[~/Page.aspx?txt=$1]]></SendTo>
            </RewriterRule>
        </Rules>
    </RewriterConfig>

<system.web>节点下:

<httpModules>
            <add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter"/>
  </httpModules>

 

经以上三步,目的基本达到,可以在在浏览器里输入www.url.com/123/或www.url.com/123查看了~!

 

但是,如果你在重写后的页面里放一个button或别的什么控件,在单击button时,页面的地址会变回原来的样子,这对用户来说可不是什么好事儿。所以要解决这个问题,就要有到上面我说所的ActionlessForm.dll(处理回发的DLL)了!方法简单的很,如下

1.引入ActionlessForm.dll

2.在重后的页面的第二行写如下代码:

  <%@ Register TagPrefix="skm" Namespace="ActionlessForm" Assembly="ActionlessForm" %>

3.将页面中的<form runat="server"></form>替换成:<skm:form id="form1" runat="server"></skm:form>

 

好了,这样一来就哦了,没什么难度,只要知道方法!

还有就是重写后css,js等带有路径的东东会失效,只要改成绝对路径就可以了~!

 

 

 

 

 

 

原创粉丝点击