我有一个多域网站,它做一些常见的重定向,比如强制使用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”域。
既然新规则似乎没有什么作用,谁能建议如何纠正它?
非常感谢。
1条答案
按热度按时间0h4hbjxa1#
你写的正则表达式可能是正确的(不确定),但是当我看到我写的一个规则把non-www重定向到www时,我不需要转义域名中的句点,也许这是可行的:
来源:Web.config redirects with rewrite rules - https, www, and more