在IIS5和IIS6时代,我们使用URL REWRITING可实现URL重写,使得WEB程序实现伪静态,但默认情况下只能实现.ASPX的伪静态,如果要实现伪静态*.HTML的页面,需要将ISAPI里面的*.HTML应用程序映射改为.NET的ISAPI。但在IIS 7时代,这一切已经变得非常简单了,您在WEB.CONFIG中就可以管理这一切了。

 

在服务器上安装好Microsoft URL Rewrite Module,具体下载地址如下:

Microsoft URL Rewrite Module for IIS 7.0 (x86)

下载地址:http://www.iis.net/downloads/default.aspx?tabid=34&g=6&i=1691 

Microsoft URL Rewrite Module for IIS 7.0 (x64)

下载地址:http://www.iis.net/downloads/default.aspx?tabid=34&g=6&i=1692

 

安装好之后如图:

 

 

可以直接在IIS 7里面进行添加重写规则,也可以直接在WEB.CONFIG中设置:

 

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    
<system.webServer>
        
<rewrite>
            
<rules>
                
<rule name="Rewrite to article.aspx">
                    
<match url="^article/([0-9]+).html$" />
                    
<action type="Rewrite" url="article.aspx?newid={R:1}" />
                
</rule>
            
</rules>
        
</rewrite>
    
</system.webServer>
</configuration>

 

然后,访问 /article/366.html 就是 访问/article.aspx?newid=366的结果了,无需像以前IIS 6时代一样去添加*.HTML的ISAPI的应用程序映射了。(这对使用虚拟主机的站点来说可是个福音,不用再叫管理员去帮你加设置了,自己在WEB.CONFIG中可以设置这一切了)

 

下面还附一个重写的规则转换工具。

可以将您原有的第三方组件或apache的.htaccess规则配置,快速按规范转化为IIS7.0的使用web.config重写规则。

 

 

posted @ 2009-03-02 17:12 Lixy 阅读(3683) 评论(6) 编辑

IIS 6下我们要设置伪静态的方法很简单,到IIS 7中也一样简单,只是界面不一样而已,具体看图。

把MSDNURLRewriting源码编译成URLRewriter.dll,然后在项目中引用URLRewriter.dll

WEB.CONFIG的设置:

<?xml version="1.0" encoding="utf-8"?>

<configuration>

  
<configSections>
    
<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
  
</configSections>
  
<RewriterConfig>
    
<Rules>
      
<RewriterRule>
        
<LookFor>~/web/new/type/(.[0-9]*)\.html</LookFor>
        
<SendTo>~/web/new.aspx?id=$1</SendTo>
      
</RewriterRule>
      
<RewriterRule>
        
<LookFor>~/web/index.html</LookFor>
        
<SendTo>~/web/index.aspx</SendTo>
      
</RewriterRule>
    
</Rules>
  
</RewriterConfig>


  
<appSettings/>
    
<connectionStrings/>
  
    
<system.web>
        
<!-- 
            设置 compilation debug
="true" 可将调试符号插入
            已编译的页面中。但由于这会 
            影响性能,因此只在开发过程中将此值 
            设置为 
true
        
-->
        
<compilation debug="false">

        
</compilation>
        
<!--
            通过 
<authentication> 节可以配置 ASP.NET 用来 
            识别进入用户的
            安全身份验证模式。 
        
-->
        
<authentication mode="Windows" />
        
<!--
            如果在执行请求的过程中出现未处理的错误,
            则通过 
<customErrors> 节可以配置相应的处理步骤。具体说来,
            开发人员通过该节可以配置
            要显示的 html 错误页
            以代替错误堆栈跟踪。

        
<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
            
<error statusCode="403" redirect="NoAccess.htm" />
            
<error statusCode="404" redirect="FileNotFound.htm" />
        
</customErrors>
        
-->
      
      
<httpHandlers>
        
<add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
        
<add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
      
</httpHandlers>

    
</system.web>

</configuration>

 

如果要伪静态*.HTML,需要更改应用程序映射(微软推出了 Microsoft URL Rewrite Module for IIS 7.0,服务器安装了该组件的空间,可以不用进行下面的步骤,直接在WEB.CONFIG中设置就行,具体看我的另外一篇博客文章)

步骤1

 

在对应“站点”中的“功能视图”中双击“处理程序映射”。

 

步骤2

 

步骤2为选择“添加脚本映射

 

步骤3

 

 

 

可执行文件路径一般为:

C:"WINDOWS"Microsoft.NET"Framework"v2.0.50727"aspnet_isapi.dll,具体路径根据.NET安装路径来设置,默认一般在C盘下

 

 

 

到这里就设置完毕了。

 

//---------------------------------------------------------------------------------------

关于“请求限制”的设置说明,请参考下图:

 

 

请求限制中,映射的设置不需要勾选,(默认也是不勾选的,但检查一下为好,防止出错)

 

 

 

posted @ 2009-03-02 16:48 Lixy 阅读(463) 评论(0) 编辑