【问题标题】:Redirect root URL - IIS 7重定向根 URL - IIS 7
【发布时间】:2012-12-21 19:00:00
【问题描述】:

我的网站上安装了一些论坛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 的工作方式相同:stackoverflow.com/a/888356/1443490
  • 我最害怕的是设置循环引用 - if somesite.com -> somesite.com/forums -> somesite.com/forums/forums -> etc
  • 您的 IIS 目前是如何设置的?
  • 好吧,我对程序的心智模型是错误的。没有一堆全局重定向,站点资源管理器窗格中的每个节点都有一个。得到它的工作。谢谢。
  • 其实我又错了。我得到了一百万个嵌套重定向。为什么这在 IIS 中这么难。

标签: windows iis url-rewriting http-redirect


【解决方案1】:

您可以使用URL rewrite 模块,而不是使用HTTP redirect 模块。

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

点击右侧面板上的Add a rule。在入站规则中选择一个Blank rule

您必须在此处命名您的规则并选择Does not match the pattern 选项。然后您必须设置Pattern(在这种情况下,这意味着不以forums开头的URL将触发此规则):

最后一步是设置重定向。您可能希望使用 advised by Google 的 301 重定向:

点击右侧面板上的Apply,您应该可以开始了。

注意:如果您的Redirect URL 与您的Pattern 不匹配,您将陷入无限循环(您可以通过简单地单击Test 按钮来测试它会写入您的@ 987654341@).

此模块的文档可用here

【讨论】:

  • 酷 - 行得通。似乎在根上正则表达式完全匹配可能会稍微面向未来,因此如果我将来添加第二个根级文件夹,我可以导航到它。是否可以在不导致循环重写的情况下进行设置?
  • 如果您想添加第二个根级文件夹,只需将其规则放在首位。规则按照它们的显示顺序进行处理 (iis.net/learn/extensions/url-rewrite-module/…)。如果您认为这可能有用,我可以编辑答案!
猜你喜欢
  • 2011-06-24
  • 2011-05-30
  • 2011-08-16
  • 1970-01-01
  • 2011-12-03
  • 2012-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多