重定向根URL - IIS 7

9

我在我的网站http://ironnoob.com/forums上安装了一些论坛。

我的网站位于c:\IronNoob,我的论坛安装在c:\IronNoob\forums中。

我希望"ironnoob.com"和"www.ironnoob.com"都可以进行服务器端重定向到"ironnoob.com\forums"。

我正在使用IIS 7,对于设置这样的内容我还是新手,所以我不知道该去搜索什么。我知道可以用HTML做客户端重定向,但我知道服务器端重定向更好。我已经找出如何为IIS安装HttpRedirect模块,但如果我在站点根目录下设置一个重定向到我的论坛文件夹,当访问ironnoob.com时就会得到一个循环重定向错误。

HTTP重定向设置:

  1. 在ISS连接面板中选择根目录
  2. 勾选“重定向请求到此位置”
  3. 目标位置= http://somesite.com/forums
  4. 勾选“仅将请求重定向到此目录中的内容(不包括子目录)”
  5. 勾选“只重定向此路径的请求(不是所有请求)”
  6. 状态代码:永久(301)

为什么它在我告诉它不要的情况下还会重定向子目录?正确的方法是什么?


我猜你应该谷歌一下301重定向IIS。这是IIS 6,但在IIS 7中的操作方式相同:https://dev59.com/P3NA5IYBdhLWcg3wn_bD#888356 - cheesemacfly
好的,我的程序心理模型是错误的。并不是有一个全局重定向堆栈,而是每个站点浏览器窗格中的节点都有一个。已经成功运行了。谢谢。 - John Shedletsky
实际上,我又错了。我得到了一百万个嵌套重定向。为什么在IIS中这么难。 - John Shedletsky
您的 forums 是作为主站点下的虚拟文件夹/应用程序设置的吗?还是托管在其他地方? - cheesemacfly
这是我网站目录中的一个真实文件夹。我自己托管论坛。 - John Shedletsky
显示剩余3条评论
1个回答

25

使用 URL rewrite 模块代替 HTTP 重定向 模块。

运行 inetmgr 命令并选择您的网站根目录。打开 URL rewrite 配置:

URL rewrite configuration

点击右侧面板上的添加规则。在入站规则中选择一个空白规则

Blank rule

从这里开始,您需要为您的规则命名并选择“不匹配模式”选项。然后,您需要设置“模式”(在本例中,这意味着不以“forums”开头的URL将触发此规则):

Rule conditions

最后一步是设置重定向。根据Google建议,您可能希望选择301重定向:

Redirect rule

点击右侧面板上的 应用 按钮,然后你就可以开始使用了。
注意:如果您的 重定向URL 与您的 模式 不匹配,则会陷入无限循环(您可以通过单击 测试 按钮来测试您的 模式)。
此模块的文档 在这里 可用。

很棒 - 这个方法可行。似乎更具有未来性的做法是在根目录上使用正则表达式进行精确匹配,这样如果我将来添加第二个根级文件夹,我也可以导航到它。是否可能设置这个而不会引起循环重写? - John Shedletsky
如果您想添加第二个根级文件夹,只需将其规则放在第一位。规则按照它们显示的顺序进行处理(http://www.iis.net/learn/extensions/url-rewrite-module/url-rewrite-module-configuration-reference#Rules_Evaluation)。如果您认为有用的话,我可以编辑答案! - cheesemacfly

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接