我在IIS 6中设置了一个网站,假设它叫做 http://www.this.com 。
我已将此网站的重定向设置为 http://www.that.com ,它维护目录结构和查询参数,如下所示:
http://www.that.com $ S $ Q - 使用“上面输入的确切网址”选项
每当有人请求时,这都很有效,例如:
http://www.this.com/subfolder/page.aspx?Id=1
然后他们最终:
http://www.that.com/subfolder/page.aspx?Id=1
现在,我有一个页面,实际上是一个处理程序, http://www.this.com/image.axd ,我不想重定向。
那是什么语法?我已经阅读了使用通配符重定向部分here,但我无法弄清楚如何做一些看似直截了当的事情。
请注意, image.axd 是一个处理程序,所以我不能只是“右键单击”它并设置重定向属性,因为它实际上不存在。
我在子文件夹中还有其他一些页面,我不想重定向,例如:
http://www.this.com/subfolder/donotredirectthispage.aspx
任何帮助都将不胜感激。
编辑:有几个人提到过使用ISAPI_Rewrite,我很感激,但我真的不想在网站配置中引入另一个复杂性。 IIS似乎暗示我可以实现我想要的东西!和0到9个变量。
使用IIS真的无法做到这一点吗?
我目前的解决方法是在我想要重定向的所有文件夹和页面上设置重定向属性,但我不这样做,但这是一个管理噩梦。
答案 0 :(得分:1)
您可以为执行重定向的page not found
错误(404)实现自定义错误页面。您将关闭IIS中的重定向。在自定义错误页面中构建重定向的逻辑。然后配置您的网站,以便404错误重定向到您的错误页面。
答案 1 :(得分:0)
如果您可以在IIS服务器上安装软件,我建议您使用工具重写请求网址。
对于IIS 6.0,我使用了ISAPI_Rewrite,效果非常好。它重量轻,可配置。有免费的“Lite”版本,可以满足您的要求。
使用包含与HTTP请求匹配的规则的文本文件配置程序,然后在匹配规则后执行写入操作。您的实例可能需要一般的重定向规则(类似于IIS中的规则)和规则。
答案 2 :(得分:0)
您应该研究使用标头重写模块的可能性,例如ISAPI_rewrite。有一个免费的“精简版”可供您满足需求。
这可以为您做什么如下:在服务器上执行实际页面之前,将根据一组可配置的规则重写请求标头(或发出HTTP 301/302重定向)。底层服务器看到剩余的请求,好像客户端确实以这种方式创建它们。
以下规则会单独留下image.axd
个请求,同时重定向其他所有内容。
# image.axd stays unchanged ("L" is the "last rule" flag)
RewriteCond Host: www.\this\.com
RewriteRule ^.*?\bimage\.axd\b.* $0 [L]
# all requests that have not been stopped by an earlier rule
# end up here ("RP" is the "permanent redirect" flag)
RewriteCond Host: www.\this\.com
RewriteRule .* http://www.that.com$0 [RP,L]