一尘不染

如何使用web.config文件强制HTTPS

c#

我搜索过Google和StackOverflow,试图找到解决方案,但它们似乎都与ASP.NET等有关。

我通常在服务器上运行Linux,但是对于这个客户端,我使用的是带有IIS 7.5(和Plesk 10)的Windows。这就是为什么我
稍微不熟悉IIS和web.config
文件的原因。在.htaccess文件中,您可以使用重写条件来检测协议是否为HTTPS并进行相应的重定向。有没有 简单的方法
可以使用web.config文件甚至使用已安装的“ URL Rewrite ”模块来实现此目的?

没有ASP.NET的经验, 因此,如果解决方案中涉及此内容,请提供清晰的实现步骤。

之所以使用web.config而 不是 PHP 这样做是因为我想对站点内的所有资产强制使用HTTPS。


阅读 440

收藏
2020-05-19

共1个答案

一尘不染

您需要URL重写模块,最好是v2(我没有安装v1,因此不能保证它会在那里工作,但是应该可以)。

这是此类web.config的示例-它将对所有资源强制使用HTTPS(使用301永久重定向):

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <clear />
                <rule name="Redirect to https" stopProcessing="true">
                    <match url=".*" />
                    <conditions>
                        <add input="{HTTPS}" pattern="off" ignoreCase="true" />
                    </conditions>
                    <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

PS 此特定解决方案与ASP.NET/PHP或任何其他技术无关,因为它仅使用URL重写模块完成-它在初始/较低级别之一中进行处理-
在请求到达您的代码之前被执行。

2020-05-19