IIS URL根据根URL重写

时间:2011-11-09 20:51:51

标签: iis-7 web-config rewrite relative-path url-rewriting

我正在尝试重写网址:

www.mydomain.com/urlfolder/filename.aspx

指向

www.mydomain.com/urlfolder/newfile.aspx

我的网络配置包含以下内容:

    <rule name="PageRedirection" enabled="true" stopProcessing="true">
      <match url="urlfolder/filename.aspx" />
      <action type="Redirect" url="urlfolder/newfile.aspx" redirectType="Permanent" />
    </rule>

问题是,这是抓住网址,如:

www.mydomain.com/subdirectory/urlfolder/filename.aspx

我试图改变我的网址            但是^没有用。似乎〜/也无法指定根。

我如何从根目录中指定此URL,而不是放入绝对路径。

我也有:

testsite.mydomain.com /

我想在那里部署的SAME web.config工作。 谢谢!

1 个答案:

答案 0 :(得分:2)

我知道这个问题已经有将近4年的历史了,所以你可能已经很久没有需要回答。

^应该可以工作:

<rule name="PageRedirection" enabled="true" stopProcessing="true">
    <match url="^urlfolder/filename.aspx" />
    <action type="Redirect" url="urlfolder/newfile.aspx" redirectType="Permanent" />
</rule>

^指定路径字符串的开头,因此在^之后放置的任何内容只会匹配站点根目录后面的内容和斜杠。

e.g。

www.example.com/urlfolder/filename.aspx

会匹配。

www.example.com/subdirectory/urlfolder/filename.aspx

不匹配。

我能想到为什么它会与/subdirectory/urlfolder/filename.aspx匹配的唯一原因就是你的web.config有一个副本 在/子目录/中,www.example.com/subdirectory/被视为根。

如果是这种情况并且您的web.config正被复制到根目录以外的位置,则另一个选项是在%windir%\system32\inetsrv\config\ApplicationHost.config而不是web.config中添加规则。这是包含适用于计算机上所有IIS的所有设置的文件,而不仅仅是特定站点。根据我的经验,Visual Studio将拒绝打开此文件。但是,您可以在其他编辑器中编辑该文件,或通过IIS GUI设置重写规则。

在GUI中,在文件树的顶层,此级别可用的工具包括URL Rewrite实用程序,其中设置的规则写入ApplicationHost.config。

希望这有帮助