asp.net 将旧域到新域重定向添加到IIS的web.config中的现有重定向规则中

hlswsv35  于 2023-03-09  发布在  .NET
关注(0)|答案(1)|浏览(131)

我有一个多域网站,它做一些常见的重定向,比如强制使用https和www,并使用斜杠。

<rewrite>
    <rules>

        <rule name="Redirect to https" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
            <match url="*" negate="false" />
            <conditions logicalGrouping="MatchAny">
                <add input="{HTTPS}" pattern="off" />
            </conditions>
            <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" />
        </rule>

        <rule name="Redirect - Top domains with non-www to www" stopProcessing="true">
            <match url="^_*(.*)" />
            <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
            <add input="{HTTP_HOST}" pattern="^([^\.]+)\.([^\.]+?)$" />
            </conditions>
            <action type="Redirect" url="{MapSSL:{HTTPS}}www.{HTTP_HOST}/{R:1}" redirectType="Permanent" />
        </rule>

        <rule name="Add trailing slash" stopProcessing="true">
            <match url="(.*[^/])$" />
            <conditions>
                <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                <add input="{URL}" pattern="/umbraco_client" negate="true" />
                <add input="{URL}" pattern="/setsquare" negate="true" />
                <add input="{URL}" pattern="/install" negate="true" />
                <add input="{URL}" pattern=".axd" negate="true" />
                <add input="{URL}" pattern=".webmanifest" negate="true" />
                <add input="{URL}" pattern="/signin-google" negate="true" />
                <add input="{URL}" pattern="/assets" negate="true" />
            </conditions>
            <action type="Redirect" url="{R:1}/" />
        </rule>
    </rules>
    <rewriteMaps>
        <rewriteMap name="MapSSL" defaultValue="http://">
            <add key="ON" value="https://" />
            <add key="OFF" value="http://" />
        </rewriteMap>
    </rewriteMaps>
</rewrite>

但是,现在需要将一个入站域(olddomain.com)重定向到一个新域(newdomain.com),所以我在第一条规则('Redirecttohttps')之后添加了以下规则:

<rule name="Old to new domain" enabled="true">
    <match url="^olddomain\.com$" />
    <action type="Redirect" url="https://www.newdomain.com" redirectType="Permanent" />
</rule>

它不需要维护任何旧的URL,只是任何进入www.example.com的请求olddomain.com(例如olddomain.com/whatever)都可以重定向到根“newdomain.com”域。
既然新规则似乎没有什么作用,谁能建议如何纠正它?
非常感谢。

0h4hbjxa

0h4hbjxa1#

你写的正则表达式可能是正确的(不确定),但是当我看到我写的一个规则把non-www重定向到www时,我不需要转义域名中的句点,也许这是可行的:

<rule name="OldToNewDomain" stopProcessing="true">
  <match url="(.*)" />
  <conditions>
    <add input="{HTTP_HOST}" pattern="^olddomain.com$" />
  </conditions>
  <action type="Redirect" url="http://www.example.com/" redirectType="Permanent" />
</rule>

来源:Web.config redirects with rewrite rules - https, www, and more

相关问题