从根到子目录的IIS7 URL重定向[关闭]


83

我将Windows Server 2008与IIS7一起使用。我需要重定向谁前来用户www.mysite.comwwww.mysite.com/menu_1/MainScreen.aspx。这是项目的文件结构:

-Sites
 -Default Web Site
  -Menu_1
  -MenuService
  -VscWebService

我将非常感谢对此的任何帮助。


在编程和服务器管理之间有一条很好的界线(由于“ Dev Ops”的流行,这一界线变得越来越模糊)。即使这样,Stack Overflow和Server Fault仍在两个站点之间保持明显的区别,并且此内容属于Server Fault,因为它实际上更多地是关于配置工具(IIS)而不是编程。
machineghost19年

Answers:


131

这里是。将此代码添加到您的web.config文件中:

<system.webServer>
    <rewrite>
        <rules>
            <rule name="Root Hit Redirect" stopProcessing="true">
                <match url="^$" />
                <action type="Redirect" url="/menu_1/MainScreen.aspx" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>

它将执行301永久重定向(URL将在浏览器中更改)。如果要使这种“重定向”不可见(重写,内部重定向),请使用此规则(唯一的区别是“重定向”已由“重写”代替):

<system.webServer>
    <rewrite>
        <rules>
            <rule name="Root Hit Redirect" stopProcessing="true">
                <match url="^$" />
                <action type="Rewrite" url="/menu_1/MainScreen.aspx" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>

2
感谢您的答复。它仍然对我不起作用。首先,我将其添加到了wwwroot web.config中,但在那里没有工作。因此,我在服务器级别(服务器>网站>默认网站)打开了URL重写,但是它仍然无法正常工作。我在这里做错什么了吗?再次非常感谢您的帮助。
user881148 2011年

2
@ user881148该规则绝对有效-我在发布之前进行了测试。1)可能放置顺序或位置错误?规则的顺序很重要:如果您已经有一些规则,则在其他规则之前添加此规则。2)“服务器>站点>默认网站” -不是服务器级别-它是由IIS安装程序创建的默认普通网站-仅此而已。3)尝试通过GUI(IIS Manager)手动创建此规则-很简单-仅需填写几个字段。4)也许您的ASP.NET路由可以处理所有重写,而忽略URL重写模块。请以某种方式检查此刻(对不起,我不太擅长ASP.NET)。
LazyOne 2011年

再次感谢您的回复。我检查了您上面提到的所有内容,并且没有添加其他规则。我尝试通过“默认网站”>“ URL重写”添加此文件,但也没有任何效果。我也没有任何ASP.NET重新路由设置。
user881148 2011年

1
@mythofechelon是的,即使与IIS 10(Windows 10 / Windows Server 2016)一样,URL Rewrite模块仍未捆绑,必须单独安装。
LazyOne

1
我建议使用<match url =“ ^ \ /?$” />,以确保如果URL末尾由/指示时,它可以工作。
Marijus Ravickas

47

我认为,这可以在没有IIS URL重写模块的情况下完成。<httpRedirect>支持通配符,因此您可以通过以下方式进行配置:

  <system.webServer>
    <httpRedirect enabled="true">
      <add wildcard="/" destination="/menu_1/MainScreen.aspx" />
    </httpRedirect>
  </system.webServer>

请注意,您需要在IIS上启用“ HTTP重定向”功能-请参阅HTTP重定向


这很完美。
尼克

16

我无法使用可接受的答案来进行此工作,主要是因为我不知道在哪里输入该代码。我到处寻找关于URL重写工具的一些解释,虽然很有意义,但找不到任何解释。我最终在IIS中使用了HTTP重定向工具。

  1. 选择你的网站
  2. 单击“ IIS”部分中的“ HTTP重定向”(确保已安装“角色服务”)
  3. 选中“将请求重定向到此目标”
  4. 输入您要重定向的位置。在您的情况下为“ wwww.mysite.com/menu_1/MainScreen.aspx”
  5. 在“重定向行为”中,我发现我必须选中“仅将请求重定向到此目录中的内容(而不是子目录),否则它将陷入循环。请参阅对您有用的内容。

希望这可以帮助。


1
该解决方案存在问题。如果设置为重定向/重写http://server/http://server/Folder/,访问http://server/Folder(注意没有斜线)将被重定向到http://server/Folder/Folder,这很可能会返回一个404
arid1

自从我从事此工作已经有一段时间了,但是我似乎记得那件事正在发生,并且是我迈出步骤5的原因。你检查了吗?
Jarrod 2014年

1
老实说,我不记得了,但是我相信。请注意,在我上面的例子中,IIS将/ Folder视为文件而不是目录,因此它重定向到子目录,并且不会被“(非子目录)”排除。
2014年

4

您需要从Microsoft下载此文件:http : //www.microsoft.com/zh-cn/download/details.aspx?id=7435

该工具称为“用于IIS 7的Microsoft URL重写模块2.0”,Microsoft对此进行了如下描述:“ URL重写模块2.0提供了基于规则的重写机制,用于在Web服务器处理请求的URL之前更改请求的URL并修改响应内容。在将其提供给HTTP客户端之前”

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.