我使用IIS 7.5和URL Rewrite。
我的网站包含以下文件层次结构:
webroot
webroot/LegacySite
webroot /和legacy /都是IIS中的独立应用程序文件夹。
我需要重写我的网址:
在Web.Conf
下面(在webroot文件夹中)无法正常工作,你能指出我缺少的东西吗?
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="MyRole" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="^mysite.com" />
<add input="{PATH_INFO}" pattern="^\LegacySite\" negate="true" />
</conditions>
<action type="Rewrite" url="\LegacySite\{R:0}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
答案 0 :(得分:17)
以下内容应该有效:
<rule name="MyRole" stopProcessing="true">
<match url="LegacySite/(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^mysite.com$" />
</conditions>
<action type="Rewrite" url="/{R:1}" appendQueryString="true" />
</rule>
您可能希望删除检查主机名的条件。这真的很重要吗?您是否有任何其他域名绑定到您不希望重定向发生的网站?这似乎没必要。你可能只需要:
<rule name="MyRole" stopProcessing="true">
<match url="LegacySite/(.*)" />
<action type="Rewrite" url="/{R:1}" appendQueryString="true" />
</rule>
我已添加appendQueryString="true"
以将任意(可选)查询字符串参数传递给重写的网址。