我已经为IIS 10中托管的网站编写了一个简单的url重写规则。它可以完美运行而没有任何问题。
但是,有一种奇怪的行为。当我在浏览器中直接写url时,规则工作正常,但是如果我在Google / Bing中搜索url,然后单击搜索页面上的url,则规则不会触发。
我调查了Insights找不到任何相关信息。
这是规则-
<rule name="PROD Rule" enabled="true" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^myweb\.com$" />
</conditions>
<action type="Redirect" url="https://www.mywebsite.com/{R:0}" redirectType="Permanent" />
</rule>
直接在浏览器中写网址-
myweb.com 重定向到https://www.mywebsite.com/
在搜索引擎Google / Bing中搜索URL,然后在搜索结果页面上单击URL-
myweb.com 停留在 myweb.com
我希望无论来源如何,只要请求到达IIS,规则都会触发。
答案 0 :(得分:0)
您可以使用以下url重写规则:
<rule name="Force SSL" enabled="true" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTPS}" pattern="off" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="true" redirectType="Permanent" />
</rule>
答案 1 :(得分:0)
因此,事实证明这并不是与搜索引擎相关的问题。相反,这只是我编写的重写规则所遗漏的情况。
现有规则期望以 myweb.com 作为输入,并将其正确重定向到https://www.mywebsite.com/
但是,当我在搜索引擎上搜索相同的网址并单击它们时。发送到服务器的网址不是 myweb.com 而是 www.myweb.com
这是有效的更新规则-
<rule name="PROD Rule" enabled="true" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" pattern="^myweb\.com$" />
<add input="{HTTP_HOST}" pattern="^threeinsure\.com$" />
</conditions>
<action type="Redirect" url="https://www.mywebsite.com/{R:0}" redirectType="Permanent" />
</rule>