假设我希望我的网站
www.example.com
像这样重定向:
https://www.example.com -> https://example.com
如何实现这一目标?这是我尝试过的,但它不起作用。即使清除缓存或使用不同的浏览器后,我也会从浏览器收到
ERR_CONNECTION_RESET
错误。是否需要重新启动应用程序?
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\example.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
<rewrite>
<rules>
<rule name="Redirect to non-www and HTTPS" enabled="true" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" pattern="^www\.example\.cz$" />
<add input="{HTTPS}" pattern="off" />
</conditions>
<action type="Redirect" url="https://example.cz/{R:1}" appendQueryString="true" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
</location>
</configuration>
<!--ProjectGuid: 8b668df1-7e1a-4d97-bd06-2ba62f95e6f5-->
我确实尝试咨询 Bing Copilot,它为我生成了这段代码。我确实尝试过谷歌搜索,但结果对于我的确切问题来说并不令人满意。
如何实现这一目标?这是我尝试过的,但它没有 工作。即使在之后,我也会从浏览器收到 ERR_CONNECTION_RESET 错误 清除缓存或使用不同的浏览器。
嗯,根据我们的场景和描述以及共享的
url-rewrite
配置,您的代码似乎没问题。
但是,您还应该验证其他一些事情。
让我们看看您还需要确认什么才能检查您的配置。
首先请检查您的服务器IIS中是否安装了Rewrite模块。这是它的先决条件。另请确保您的 IIS 版本支持重写规则和
AspNetCoreModuleV2
模块。
最重要的是,如果您使用托管服务器(租用),请与您的托管提供商确认,他们是否支持重写规则,或者他们是否有任何特定要求或限制。
另一个关键是,验证 IIS 服务器是否具有 example.com 的有效 SSL/TLS 证书。验证证书是否正确安装并涵盖 www 和非 www 版本。还要确保其他可能冲突或创建无限循环的重定向规则。
应用程序需要重新启动吗?
每当您对 IIS 配置进行任何更改时,最好重新启动 Web 服务器以应用修改。
确保您已启用重写模块的日志记录,并检查日志中是否有任何错误或其他信息。您可以在
<rewrite>
内添加以下行。这样您就可以在发生任何故障时获取错误详细信息。
我强烈建议您暂时用简单的重定向替换您的规则,以隔离潜在的问题。例如,您可以跟踪并检查其是否按预期工作,而不是直接运行现有配置:
<rule name="Test Redirect" stopProcessing="true">
<match url=".*" />
<action type="Redirect" url="https://example.com/{R:0}" />
</rule>
注意: 请仔细检查以上步骤,然后重试。如果对此还有任何疑问,请参阅此官方文档。