除root之外的所有页面的ASP.NET httpRedirect exactDestination

时间:2015-01-19 13:05:12

标签: redirect iis

我正在更改IIS网站的主域名,我需要保持现有网址的正常运行。与此同时,我正在更改此(上一个)域的起始页面的行为。此域先前已在其根级别可访问,但现在我需要根页面(默认文档)重定向到特定的子目录。

总结:我需要在重定向时保留除默认文档(root)之外的所有页面的尾随路径。例如:

  • www.old.com/ - > www.new.com/en
  • www.old.com/en/page2.htm - > www.new.com/en/page2.htm
  • www.old.com/en/page3.htm - > www.new.com/en/page3.htm
  • www.old.com/page1.htm - > www.new.com/page1.htm

我有web.config

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <httpRedirect enabled="true" destination="http://www.new.com" httpResponseStatus="Permanent" exactDestination="false" />
    </system.webServer>
    <location path="Default.aspx">
        <system.webServer>
            <httpRedirect enabled="true" destination="http://www.new.com/en" httpResponseStatus="Permanent" exactDestination="true" />
        </system.webServer>
    </location>
</configuration>

我已将IIS设置默认文档设置为Default.aspx

但这不起作用。

1 个答案:

答案 0 :(得分:0)

我通过在IIS中使用URL重写模块来解决它:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Root request" enabled="true" stopProcessing="true">
                     <match url="^$" />
                     <action type="Redirect" url="http://www.new.com/en" redirectType="Found" />
                 </rule>             
                 <rule name="Path request" enabled="true" stopProcessing="true">
                     <match url="^(.*)$" />
                     <action type="Redirect" url="http://www.new.com/{R:1}" redirectType="Found" />
                 </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>