【发布时间】:2020-03-30 01:19:09
【问题描述】:
I need to write a IIS rewrite rule which matches the following condition
- example.com
- www.example.com
- http://www.example.com
- https://www.example.com
- http://example.com
-
这一切都应该重定向到https://www.example.com/somepage/
条件是,从 SEO 的角度来看,应该只识别一个 301 重定向。任何指针表示赞赏
尝试了以下重定向,但导致两跳而不是一跳
<rule name="no path" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{REQUEST_URI}" pattern="^\/?$" ignoreCacom="true" />
<add input="{HTTP_HOST}" pattern="^(www.)?example.com$" ignoreCacom="true" />
</conditions>
<action type="Redirect" url="https://www.example.com/somepage" redirectType="Permanent" />
</rule>
<rule name="with path and http" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{PATH_INFO}" pattern="\/somepage" negate="true" ignoreCacom="true" />
<add input="{REQUEST_URI}" pattern="^\/.+$" ignoreCacom="true" />
<add input="{HTTP_HOST}" pattern="^(www.)?example.com$" ignoreCacom="true" />
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://www.example.com{REQUEST_URI}" redirectType="Permanent" />
</rule>
<rule name="with path and https" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{PATH_INFO}" pattern="\/somepage" negate="true" ignoreCacom="true" />
<add input="{REQUEST_URI}" pattern="^\/.+$" ignoreCacom="true" />
<add input="{HTTP_HOST}" pattern="^example.com$" ignoreCacom="true" />
<add input="{HTTPS}" pattern="^ON$" />
</conditions>
<action type="Redirect" url="https://www.example.com{REQUEST_URI}" redirectType="Permanent" />
</rule>
<rule name="with somepage, no www" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{PATH_INFO}" pattern="\/somepage" ignoreCacom="true" />
<add input="{HTTP_HOST}" pattern="^example.com$" ignoreCacom="true" />
</conditions>
<action type="Redirect" url="https://www.example.com{REQUEST_URI}" redirectType="Permanent" />
</rule>
<rule name="with somepage and https, no www" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{PATH_INFO}" pattern="\/somepage" ignoreCacom="true" />
<add input="{HTTP_HOST}" pattern="^www.example.com$" ignoreCacom="true" />
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://www.example.com{REQUEST_URI}" redirectType="Permanent" />
</rule>
enter code here
【问题讨论】:
-
请在发帖前努力。这不包含任何代码,导致观众相信你根本没有尝试。
-
@CodingNinja 谢谢,编辑帖子以包含尝试过的规则
-
添加这个条件,似乎已经成功了
标签: redirect iis url-rewriting http-status-code-301 url-rewrite-module