我跟着此解决方案关于如何将 http 重定向到 https。它在 PC 上有效,但由于某种原因在手机上无效(我确定在 iPad 或平板电脑上也无效)。您可以测试网站这里。我认为 IIS 忽略了手机上的 http 请求,但我不知道为什么会这样。如果我在手机上测试时等待的时间足够长,就会出现 err_connection_timed_out。在手机上连接到 https 工作正常。
我使用以下方法安装了失败请求跟踪本指南。当我在手机上测试(http)时,它没有记录任何内容。当测试 https 时,它会记录(代码 200)。在指南中,他们要求我记录 200-399 代码,但为了确保万无一失,我将其更改为 200-999,但这并没有什么区别。
有没有办法记录超时请求或找出它无法加载的原因?
这是我的 web.config 文件:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.web>
<customErrors mode="Off" />
<compilation debug="true" />
</system.web>
<system.webServer>
<rewrite>
<rules>
<rule name="Redirect to HTTPS" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" ignoreCase="true" negate="false" />
<conditions logicalGrouping="MatchAny" trackAllCaptures="false">
<add input="{HTTPS}" ignoreCase="true" matchType="Pattern" negate="false" pattern="OFF" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="false" redirectType="Permanent" />
</rule>
<rule name="Imported Rule 1" stopProcessing="true">
<match url="^(.*)$" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{R:1}" pattern="\.(gif|jpe?g|png)$" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="/index.php/{R:1}" />
</rule>
</rules>
</rewrite>
<security>
<requestFiltering allowDoubleEscaping="true">
<requestLimits maxUrl="3000000" maxQueryString="3000000" />
</requestFiltering>
</security>
<defaultDocument>
<files>
<clear />
<add value="index.php" />
</files>
</defaultDocument>
<urlCompression doDynamicCompression="true" />
<tracing>
<traceFailedRequests>
<add path="*">
<traceAreas>
<add provider="WWW Server" areas="Rewrite" verbosity="Verbose" />
</traceAreas>
<failureDefinitions timeTaken="00:00:00" statusCodes="200-999" />
</add>
</traceFailedRequests>
</tracing>
</system.webServer>
</configuration>
在 IIS 的高级设置中,我将HSTS -> http to https redirect
和true
设置HSTS -> enabled
为true
。在 SSL 设置中,我取消选中了require SSL
按钮。我使用的是 IIS 版本 10.0。
这家伙似乎有同样的问题,只是不特定于 http。也许该问题中的信息有助于回答这个问题。
答案1
我认为问题在于端口 80 被关闭,只接受端口 443。这使得服务器忽略任何 http 请求,并且不重定向它们。它在 PC 上工作似乎是一种假象。我相信是缓存让它工作了。
因此,打开端口 80 可以解决我的问题。