关于urlrewrite重写,我想很多人应该都接触过吧,一般为了SEO友好,使用的比较多。
这几天遇到一个问题,百度谷歌查了很久,还是没有找到合适的解决方案,所以只能来此请教各位园友!
如下面的原始URL
http://www.abc.com/search/result.aspx?Keyword=.net
意图重写成:
<add name="Rewrite001" virtualUrl="^/kw-(.*)/" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/Result.aspx?Keyword=$1" ignoreCase="true" />
该规则对于正常的关键词输入均可以重写成功,但是如果关键字带了部分特殊字符,如上面提到的.,等则在服务器上不可以重写成功,报404.
以上规则在本地开发环境windows7+iis7中没有任何问题,重写后的URL
http://dev.abc.com/kw-.net/ 可以正常访问。
但是更新至正式环境后 服务器环境:windows2003 + iis6 就不可以了。经在windows2003 + iis的开发环境中测试。如果域名放在iis上就无法访问,如果是以localhost:直接浏览形式则可以访问,http://localhost:xxx/kw-.net/
请问各位园友是不是需要在iis6上特殊设置一些什么东西来确保特殊字符.等关键字也正常纳入重写规则的范围呢?
深表谢意!
看下 IIS的 HandlerMappings,添加个mapping可以搞定, 参照内置的 *.cshtml 的 handler设置,把path相应的改下