win2003 r2 iis6 isapi_rewrite3
网站的httpd.conf 中有写 AccessFileName httpd.ini
将/ArticeShow.ashx?Id=12 重写为 /Article_12.html
在httpd.ini中
我自己写的是RewriteRule /Article_([0-9]+)\.html /ArticleShow\.ashx\?Id=$1 [L]
打开是404 页面
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在IIS6中使用ISAPI_Rewrite3进行URL重写时,配置方式与Apache的httpd.conf和httpd.ini有所不同。ISAPI_Rewrite有它自己的规则文件,通常命名为httpd.ini,并且不直接使用Apache的AccessFileName指令,因为这是Apache特有的配置项。
根据您的需求,您希望将/ArticleShow.ashx?Id=12
这样的URL重写为/Article_12.html
。在ISAPI_Rewrite的httpd.ini文件中,正确的重写规则应该是这样的:
RewriteRule ^/Article_([0-9]+)\.html$ /ArticleShow.ashx?Id=$1 [NC,L]
这里解释一下这个规则: - ^/Article_([0-9]+)\.html$
是一个正则表达式,匹配以/Article_
开头,后面跟着一个或多个数字(由[0-9]+
表示),然后是.html
结尾的URL路径。 - ([0-9]+)
用于捕获数字部分,这部分将会作为 $1
变量传递给重定向的目标URL。 - /ArticleShow.ashx?Id=$1
是目标URL,其中 $1
替换为从原始URL中捕获的数字。 - [NC]
表示不区分大小写。 - [L]
表示如果该规则匹配,则停止处理后续规则,立即重定向。
请确保ISAPI_Rewrite已经正确安装并且在IIS中对相应的网站启用了该筛选器。此外,检查httpd.ini文件的路径是否正确,以及IIS应用程序池的身份验证设置、权限等是否配置得当,这些都可能影响到URL重写的执行。
如果更改后仍然遇到404错误,可能需要检查以下几个方面: 1. 确保ISAPI_Rewrite服务已启动,并且在IIS对应的站点属性的“ISAPI筛选器”中添加了ISAPI_Rewrite筛选器。 2. 检查网站目录下是否有实际的ArticleShow.ashx
文件,并且能够正常处理没有重写参数的请求。 3. 确认IIS对于.ashx
扩展的支持是否已经启用。 4. 清理浏览器缓存或尝试使用隐私模式访问,以排除客户端缓存问题。