zoukankan      html  css  js  c++  java
  • .net 用URLRewriter 实现 伪静态 2003 iis配置/win7 iis配置

    DEMO下载地址:https://files.cnblogs.com/sjns/URLRewriterDemo.rar

     URLRewriter.dll下载 :https://files.cnblogs.com/sjns/URLRewriter.rar

    1,添加URLRewriter.dll引用到bin目录下

    2,在web.config里的<configSections>加入如下部分

     <configSections> 
        <!--urlrewritter-->
        <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
        <!--end-->

     

    3,在<system.web>中的<httpHandles>节点里加入如下配置

     <httpHandlers>
          <!--添加模块配置-->
          <add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
          <add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />

     

    4,配置重写规则(以一代码复制到  <system.web> 上面。如下结构)

      <RewriterConfig>
        <Rules>
          <RewriterRule>
            <LookFor>~/index.html</LookFor>
            <SendTo>~/default.aspx</SendTo>
          </RewriterRule>
          <RewriterRule>
            <LookFor>~/news/details_(/d+)_(/d+).html</LookFor>
            <SendTo>~/news/details.aspx?tid=$1&amp;nid=$2</SendTo>
          </RewriterRule>
          <RewriterRule>
            <LookFor>~/news/index.html</LookFor>
            <SendTo>~/news/default.aspx</SendTo>
          </RewriterRule>
          <RewriterRule>
            <LookFor>~/news/list_(/d+).html</LookFor>
            <SendTo>~/news/list.aspx?tid=$1</SendTo>
          </RewriterRule>
          <RewriterRule>
            <LookFor>~/(.*).html</LookFor>
            <SendTo>~/$1.aspx</SendTo>

          </RewriterRule>
        </Rules>
      </RewriterConfig>

    <system.web>

         .. .........................................

        ...........................................

     

    标签解释

    <LookFor>:此标签中是伪装后的地址

    <SendTo>:此标签中值:当浏览器访问伪装地址时,所指向的地址 当访问 xxxxx.html 其实是访问的yyyyy.aspx

    5,修改IIS配置

    重写后的页面在程序里运行没问题,比如在vs里运行后讲地址栏的url改掉

    http://localhost:4814/atbouus.aspx手动改为http://localhost:4814/atbouus.html

    没问题,可以运行,但是在IIS里配置虚拟目录后,再运行改掉路径

    http://localhost/nextuntil/aboutus.aspx改为http://localhost/nextuntil/aboutus.html

    发现出错勒,这是因为aboutus.html页面根本不存在,所以需要对IIS配置稍作修改

     2003 iis配置

    虚拟目录右键>>>属性>>>(选项卡第一个|虚拟目录>共享位置>配置)>>>映射

    点击添加效果如下图:

     URL重写后IIS配置

    win7中IIS配置 

    选中你的站点比如website ,并且切换到功能视图。双击【处理程序映射】在打开窗口右侧的操作栏目下做如下操作。(3、4可以不做,如果不行时,再把3、4步骤加上)



     1,【添加脚本映射】-路径为:*.html.可执行文件为:C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll 注意:如果你的网站是2.0。可执行文件为:C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll 。名称:任意,比如:html.
    2, 【添加通配符脚本映射】 请求路径为*。可执行文件为:C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,名称任意,比如:aspnet.

    3,【托管处理程序映射】(路径:*  可执行文件:System.Web.UI.PageHandlerFactory 名称 任意 比如Html-Integrate)

    4, 双击website站点切换到站点功能视图。然后双击模块,打开窗口之后在右侧的操作栏目下面,单击【添加托管模块】-》名称:任意 如aspnet  类型:URLRewriter.ModuleRewriter 并且 把【仅针对向asp.net 应用程序或托管处理程序发出请求调用】前面的选项 勾上。(记住一定要勾上)。

    5 ,最后一步:双击iis7.0或7.5的应用程序池。在应用程序池列表中找到【aspnet】应用程序池。双击打开之后。将aspnet应用程序池的【托管管道模式】设置为经典模式。

    <a>,关于重写规则

    <LookFor>里面为配置后的地址,<SendTo>才是真正访问的地址

    1.上面的例子中给出了一些比较常见的重写规则,比如:default.aspx->index.html

    一般用在首页的重写

    2.如果很多页面都是.aspx并且没有传参可以通用一个重写规则,上面例子配置规则里最后一个

    但是它必须放在其他规则后面,这个可以根据运行顺序理解

    3.涉及到参数传递的,1个参数或者多个参数的,上面也有,参数间用$amp;隔开

    主要其实就是正则的使用勒(我正则也不太好,所以都很简单的规则做例子勒)

    <b>,<httpHandles>里配置说明

    这里其实只有2句,需要说明的是,这里的例子配置的重写规则都是.html的后缀

    而如果项目里有些页面原本的后缀就是.html的话

    会因为配置规则的最后一句造成"干扰"

    譬如有一页面名为sitemap.html原本可以直接访问

    但是由于重写规则的存在,会导致去访问sitemap.aspx,这个页面自然是不存在的

    所以我们需要加上对html的模块配置,就是这里的第二句,注意顺序,道理其实同配置规则里 2 的一样

    <c>,其他

    其他还有蛮多说法,比如

    1,重写为目录格式像 article/ajax/ 这种

    2,或者实现任意二级域名 等等,后续勒、

    3,重写规则比较多的时候,可以单独建一个xml文件,web.config里配置下指定

    具体操作如下:

      </configSections>
      <!--加入url重写规则定义的引用-->
      <RewriterConfig configSource="WebReURL.config" />
      <appSettings/>

    然后自己建一个WebReURL.config配置文件

    专门用来写入重写规则,格式如下:

    <?xml version="1.0" encoding="utf-8"?>
    <RewriterConfig>
      <Rules>
        <RewriterRule>
          <LookFor>~/news/index.html</LookFor>
          <SendTo>~/news/default.aspx</SendTo>
        </RewriterRule>
        <RewriterRule>
          <LookFor>~/2012/index.html</LookFor>
          <SendTo>~/2012/default.aspx</SendTo>
        </RewriterRule>
      </Rules>
    </RewriterConfig>

  • 相关阅读:
    判断ios版本
    DBL_EPSILON和 FLT_EPSILON的用法
    __bridge,__bridge_retained和__bridge_transfer的意思,区别与使用
    ios俩个APP之间跳转、传值,以及直接跳转到指定app页面 或者 app 评价页面 的方法
    如何参与GitHub开源项目
    第202题:快乐数
    第217题:存在重复元素
    第234题:回文链表
    第242题:有效的字母异位词
    JAVASRIPT
  • 原文地址:https://www.cnblogs.com/sjns/p/2887494.html
Copyright © 2011-2022 走看看