URL重写不仅仅对搜索引擎更好的收录有帮助而且从用户体验来考虑,重写后的url地址显然友好性更高。
这里主要说一下三种常见的url重写的实现以及需要注意的事项。
前置条件,下载微软的URLRewriter.rar,将URLRewriter.dll放到目录的bin下。
例如项目地址为:http://localhost:4361/MyURLRewrite/Default.aspx
首先配置web.config文件,在<configSections>节点下添加
<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
然后<configuration>总节点下添加
<Rules>
<!--http://localhost:4361/MyURLRewrite/Default.aspx?id=123 重写为 http://localhost:4361/MyURLRewrite/123.aspx -->
<RewriterRule>
<LookFor>~/(\d{0,999999})\.aspx</LookFor>
<SendTo>~/default.aspx?ID=$1</SendTo>
</RewriterRule>
<!--http://localhost:4361/MyURLRewrite/Default2.aspx?id=123 重写为 http://localhost:4361/MyURLRewrite/123.html -->
<RewriterRule>
<LookFor>~/(\d{0,999999})\.html</LookFor>
<SendTo>~/default2.aspx?id=$1</SendTo>
</RewriterRule>
<!--http://localhost:4361/MyURLRewrite/Default3.aspx?id=123 重写为 http://localhost:4361/MyURLRewrite/123/-->
<RewriterRule>
<LookFor>~/(\d{0,999999})/</LookFor>
<SendTo>~/default3.aspx?id=$1</SendTo>
</RewriterRule>
</Rules>
</RewriterConfig>
然后配置<httpHandlers>
<add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
<add verb="*" path="*" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
web.config就配置完了以后,
对于第一种url重写情况现在就可以生效了。
对于第二种url重写还需要配置一下IIS站点属性,IIS站点>属性>主目录>配置>,这里添加一个和.html的扩展名映射,可执行文件和.aspx的是一样的,同时取消确认文件是否存在选项。
配置完这个以后第二种URL重写就生效了。
对于第三种url重写情况需要添加一个*.*的映射,可执行文件和.aspx的也是一样的,同时取消确认文件是否存在选项。
这样第三种url重写就可以生效了。
可能存在的问题和解决办法:
1.图片不显示(CSS、JS路径不对)
修改图片的代码路径,例如:
<img src="images/map.gif" />
修改为:
<img src="http://images.cnblogs.com/map.gif" />
2.网站性能下降
解除图片文件夹的*.*映射(CSS、JS文件夹的操作是一样的)
IIS站点>图片文件夹>属性>目录>创建,删除如下图所示的那一项之后就解除了该文件夹下的*.*映射
这样配置完了之后,图片可以正常显示,并且能显著解决url重写后对整个站点带来的性能问题。