我在谷歌和StackOverflow周围搜索,试图找到一个解决方案,但他们似乎都与ASP有关。净等。
我通常在我的服务器上运行Linux,但对于这个客户端,我使用带有IIS 7.5(和Plesk 10)的Windows。这就是为什么我对IIS和web有点不熟悉的原因。配置文件。在.htaccess文件中,您可以使用重写条件来检测协议是否为HTTPS并相应地重定向。有没有一个简单的方法来实现这一点使用网络。配置文件,甚至使用'URL重写'模块,我已经安装?
我没有ASP的经验。NET因此,如果这涉及到解决方案,那么请包括如何实现的明确步骤。
我这样做的原因是。配置而不是PHP是我想强制HTTPS在网站内的所有资产。
我不允许在我的环境中安装URL重写,所以,我找到了另一个路径。
把这个加到我的网里。config添加了错误重写,并适用于iis7.5:
<system.webServer>
<httpErrors errorMode="Custom" defaultResponseMode="File" defaultPath="C:\WebSites\yoursite\" >
<remove statusCode="403" subStatusCode="4" />
<error statusCode="403" subStatusCode="4" responseMode="File" path="redirectToHttps.html" />
</httpErrors>
然后,按照这里的建议:https://www.sslshopper.com/iis7-redirect-http-to-https.html
我将IIS网站配置为需要SSL,并创建了html文件,在403(禁止)错误时执行重定向(redirectToHttps.html):
<html>
<head><title>Redirecting...</title></head>
<script language="JavaScript">
function redirectHttpToHttps()
{
var httpURL= window.location.hostname + window.location.pathname + window.location.search;
var httpsURL= "https://" + httpURL;
window.location = httpsURL;
}
redirectHttpToHttps();
</script>
<body>
</body>
</html>
我希望有人发现这是有用的,因为我无法找到所有的碎片在一个地方在其他地方。
你需要URL重写模块,最好是v2(我没有安装v1,所以不能保证它会在那里工作,但它应该)。
这是一个这样的网络的例子。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>
注:
这个特殊的解决方案与ASP没有任何关系。NET/PHP或任何其他技术,因为它只使用URL重写模块完成——在请求到达代码执行点之前,它在初始/较低的级别之一进行处理。
当您在AWS上使用带有应用程序负载均衡器的IIS 10时,必须按以下方式配置重定向。
<rule name="Force HTTPS" enabled="true" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_X_Forwarded_Proto}" pattern="^https$" negate="true" />
<add input="{HTTP_HOST}" pattern="^(www\.)?dname\.com$" />
</conditions>
<action type="Redirect" url="https://www.dname.com{REQUEST_URI}" />
</rule>
如果你有子域重定向使用如下:
<!--START REDIRECT TO HTTPS-->
<rule name="Force HTTPS" enabled="true" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_X_Forwarded_Proto}" pattern="^https$" negate="true" />
<add input="{HTTP_HOST}" pattern="subdomain\.domain\.com$" />
</conditions>
<action type="Redirect" url="https://subdomain.domain.com{REQUEST_URI}" />
</rule>
<!--END REDIRECT TO HTTPS-->