我正在尝试重写网址:
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工作。 谢谢!
答案 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。
希望这有帮助