开发者社区 问答 正文

httpd.iniurl重写规则

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  页面

展开
收起
crazybozy 2014-06-11 16:28:30 3930 分享 版权
阿里云 AI 助理回答

在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. 清理浏览器缓存或尝试使用隐私模式访问,以排除客户端缓存问题。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答地址: