服务器环境准备:
1、下载URLRewriter组件组件:
官方下载地址:http://download.microsoft.com/download/0/4/6/0463611e-a3f9-490d-a08c-877a83b797cf/MSDNURLRewriting.msi
2、在网站项目中添加URLRewriter程序集的引用。
生成URLRewriter.dll,其他网站下的大部分都是8kb,自己生成的是20kb,20kb的才是官网正版。
配置webconfig文件:
1、在<configuration>与</configSections>节点中间加入如下配置:
<section name=”RewriterConfig” type=”URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter” />
2、将<compilation debug="true" />替换为以下:
<compilation debug="true" >
<buildProviders>
<add extension=".html" type="System.Web.Compilation.PageBuildProvider" />
</buildProviders>
</compilation>
3、在</system.web>前增加:
<httpModules>
<add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter" />
</httpModules>
<httpHandlers>
<add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
<add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
</httpHandlers>
4、配置伪静态的语法:在</configSections>后加入<RewriterConfig>
</RewriterConfig>节点。在<RewriterConfig>与</RewriterConfig>之间加入伪静态规则:
<Rules>
<!–定义伪静态第一条规则开始–>
<RewriterRule>
<LookFor>~/view(.+)*.html</LookFor>
<SendTo>~/view.aspx?id=$1</SendTo>
</RewriterRule>
<!–定义伪静态第一条规则结束–>
<!–定义伪静态规则 以此类推–>
</Rules>
1、新建一个网站:名称任意;选择net FrameWork版本. 应用程序池在新疆网站后会自动生成,程序池的托管管道模式先暂时设置为集成模式。等伪静态设置完成之后再将托管管道模式设置为经典模式。选中你的站点比如website ,并且切换到功能视图。双击【处理程序映射】在打开窗口右侧的操作栏目下做如下操作。
2、【添加脚本映射】-路径为:*.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 (注意64位与32位的区别)。名称:任意比如:html-jbys
3、【添加通配符脚本映射】 请求路径为*。可执行文件为:C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll(注意64位与32位的区别),名称任意,比如:html-tpfjb
4、【托管处理程序映射】(路径:* 可执行文件:System.Web.UI.PageHandlerFactory 名称 任意 比如html-tgclcx)
5、【添加托管模块】双击website站点切换到站点功能视图。
然后双击模块,打开窗口之后在右侧的操作栏目下面,单击【添加托管模块】-》名称:任意 如html-tgmk 类型:URLRewriter.ModuleRewriter 并且把【仅针对向asp.net 应用程序或托管处理程序发出请求调用】前面的选项勾上。(记住一定要勾上)
6、最后一步:双击iis7.0或7.5的应用程序池。在应用程序池列表中找到【aspnet】应用程序池。双击打开之后。将aspnet应用程序池的【托管管道模式】设置为经典模式。
我配置完成的案例如下:(重要,如果有出现配置了规则但是没效果的,请看配置webconfig文件的第二步,我就碰到了这个问题,浪费了一天时间)
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<configSections>
<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
</configSections>
<RewriterConfig>
<Rules>
<RewriterRule>
<LookFor>~/Bulletin/Bulletin_(.+)*.html</LookFor>
<SendTo>~/NewsCenter/BulletinShow.aspx?did=$1</SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>~/DynamicNews/DynamicNews_(\d+)*.html</LookFor>
<SendTo>~/NewsCenter/DynamicNewsShow.aspx?did=$1</SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>~/TradeInfo/TradeInfo_(\d+)*.html</LookFor>
<SendTo>~/NewsCenter/TradeInfoShow.aspx?did=$1</SendTo>
</RewriterRule>
</Rules>
</RewriterConfig>
<appSettings>
<add key="sqlconn" value="Data Source=localhost;Initial Catalog=******;User ID=******;Password=******" />
<add key="FCKeditor:BasePath" value="~/fckeditor/" />
<add key="FCKeditor:UserFilesPath" value="~/DownLoadImg/" />
</appSettings>
<connectionStrings />
<system.web>
<compilation debug="true" >
<buildProviders>
<add extension=".html" type="System.Web.Compilation.PageBuildProvider" />
</buildProviders>
</compilation>
<authentication mode="Forms" />
<customErrors mode="Off" />
<httpModules>
<add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter" />
</httpModules>
<httpHandlers>
<add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
<add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
</httpHandlers>
</system.web>
<system.webServer>
<defaultDocument>
<files>
<add value="index.aspx" />
</files>
</defaultDocument>
<directoryBrowse enabled="true" />
<handlers>
<add name="html_tgclcx" path="*" verb="*" type="System.Web.UI.PageHandlerFactory" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode" />
<add name="html_tpfjb" path="*" verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="None" preCondition="classicMode,runtimeVersionv2.0,bitness32" />
<add name="html_jbys" path="*.html" verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" preCondition="classicMode,runtimeVersionv2.0,bitness32" />
</handlers>
<modules>
<add name="html_tgmk" type="URLRewriter.ModuleRewriter" preCondition="managedHandler" />
</modules>
</system.webServer>
</configuration>