Iis 7 虚拟目录的IIS重定向url

Iis 7 虚拟目录的IIS重定向url,iis-7,url-rewriting,Iis 7,Url Rewriting,如何在IIS 7.0中为虚拟目录设置重定向url?我已经安装了最新的url重写模块2.x 我可以用一个例子来解释我的问题: 我的IIS 7.0服务器上有一个网站,www.mysite.com。我决定在我的网站下创建一个虚拟目录“sales”,它指向网站的根目录。现在我需要为vdir创建一个重定向url。vdir指向与我的站点根目录相同的虚拟根目录 最大的想法是我可以去www.mysite/sales,我会自动重定向到www.mysite.com?productid=200 我尝试使用vdir(非

如何在IIS 7.0中为虚拟目录设置重定向url?我已经安装了最新的url重写模块2.x

我可以用一个例子来解释我的问题:

我的IIS 7.0服务器上有一个网站,www.mysite.com。我决定在我的网站下创建一个虚拟目录“sales”,它指向网站的根目录。现在我需要为vdir创建一个重定向url。vdir指向与我的站点根目录相同的虚拟根目录

最大的想法是我可以去www.mysite/sales,我会自动重定向到www.mysite.com?productid=200

我尝试使用vdir(非网站)的重写url重定向,但始终收到以下错误消息:

Cannot add duplicate collection entry of type 'rule' with unique key 
attribute 'name' set to "test".
当我指向虚拟vdir并尝试添加规则时,会发生这种情况

我可以在网站级别添加规则,但规则不起作用。我的意思是url“www.mysite/sales”给了我以下错误。我知道钥匙是独一无二的。我从web.config中查看了它

这种功能在IIS 6.0中非常容易使用,只需用鼠标指向vdir并设置属性-->重定向到url


请有人解释一下在IIS 7.0中什么是正确的方法?

实际上不太容易,但也不太可怕

1) 创建物理目录而不是虚拟目录

2) 确保您有HTTP重定向角色服务。看

3) 打开IIS管理器并浏览到要重定向的物理目录

4) 双击IIS下的“HTTP重定向”图标

5) 选中“将请求重定向到此目的地”框并输入新的URL()

6) 根据需要勾选下两个方框;我发现通常有必要检查两者

7) 按应用按钮

8) 选择网站并在“管理网站”下“重新启动”


9) 测试。

发生这种情况的原因是,默认情况下,所有规则配置都从父web应用程序继承。因此,如果根网站中定义了一个规则,那么它将在层次结构中的所有后续子网站上继承;除非它被清除

例如,如果IIS应用程序层次结构如下所示-

默认网站(根)

| Web应用程序1(VDir1)| Web子应用程序11(VDir2)

| Web应用程序2(VDir3)

名为“Test”的规则如果存在于根应用程序中,则会继承到Web应用程序1、Web应用程序11和Web应用程序2

在您的情况下,Web应用程序11(VDir2)在物理上与(VDir1)位于同一位置。因此,这两个目录的IIS配置是相同的,因为它共享相同的Web.config文件

因此,添加到Web.config文件的任何新规则都将自动应用于这两个虚拟目录(VDir1和VDir2)。由于默认情况下规则会被继承,IIS中的规则引擎在解析规则时会发现这是一个问题,因为它已经通过继承存在

一个可能的解决方案是在web.config文件中添加任何规则之前添加标记,以便清除任何继承的规则

<rewrite>
   <rules>
     <clear/>
     <rule name="test" stopProcessing="true">
        <match xxx />
        <action xxx />
     </rule>
   </rules>
</rewrite>

但是,我更喜欢标记,而不是只删除需要添加到继承配置中的规则。这将确保根网站上的所有其他规则在层次结构中继承;只有这个新规则被(某种程度上)覆盖

<rewrite>
   <rules>
     <remove name="test"/>
     <rule name="test" stopProcessing="true">
        <match xxx />
        <action xxx />
     </rule>
   </rules>
</rewrite>


以防万一,站点的配置引用当前似乎在解析XSLT文件:\XSLT\ConfigReference.XSLT时出现问题
错误,但刷新时有时会出现实际内容。看起来是临时问题,所以我回滚了链接更改。为什么需要创建物理目录而不是虚拟目录?有什么区别吗?已经5年多了,所以我不得不搜索。建议它在物理目录中创建一个web.config,这听起来很正确。如果您现在正在进行设置,我可能建议您使用URL Rewrite 2.0(它可以与Web平台安装程序一起安装)。它比许多年前工作得好得多。另请参见“前进”而不是“重定向”。