如何解决从https // www到https // non-www版本的网站重定向?

时间:2019-05-19 06:15:44

标签: iis https url-redirection

我上周在iis中添加了ssl,并在网站的web.config中配置了重定向301规则。

今天,我注意到https://www版本没有重定向到我网站的https://non-www版本,并且两个版本的图片和CSS文件等资源都可用。

我添加到我的web.config中的这些规则正确吗?

由于IIS和wordpress,我不得不将资源和Unicode Url重定向添加到web.config。

从http重定向到https的操作正常

从http // www到http://non-www

重定向有效

但无法从https // www重定向到https://non-www

我的web.config文件:

<rewrite>
<rules>
<rule name="HTTPS" patternSyntax="ECMAScript" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" 
redirectType="Permanent" />
</rule>
<rule name="Redirect Image to HTTP" stopProcessing="true">
<match url=".*\.(gif|jpg|jpeg|png|css|js|pdf|ttf|woff2|woff|mp4)$" 
ignoreCase="true" />
<action type="Rewrite" url="{R:0}" />
</rule>
<rule name="WordPress Rule" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="index.php" />
<serverVariables>
<set name="REQUEST_URI" value="{UNENCODED_URL}" replace="true" />
</serverVariables>
</rule>
</rules>

1 个答案:

答案 0 :(得分:0)

根据您的描述,您的规则似乎没有问题,那么您似乎想意识到,将诸如https://www.example.com之类的任何https请求更改为https://example.com正确吗?我在这里做了一个样本。这是规则,希望它能对您有所帮助。

 <rule name="rule1" stopProcessing="true">
                <match url="(.*)" />
                <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                    <add input="{HTTPS}" pattern="^on$" />
                    <add input="{HTTP_HOST}" pattern="www[.](.+)" />
                </conditions>
                <action type="Redirect" url="https://{C:1}/{R:0}" />
            </rule>