ASP.NET Core 使用 web.config 将 www https 重写规则为 https 非 www

问题描述 投票:0回答:1

假设我希望我的网站

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,它为我生成了这段代码。我确实尝试过谷歌搜索,但结果对于我的确切问题来说并不令人满意。

asp.net-core url-rewriting web-config rules
1个回答
0
投票

如何实现这一目标?这是我尝试过的,但它没有 工作。即使在之后,我也会从浏览器收到 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>

注意: 请仔细检查以上步骤,然后重试。如果对此还有任何疑问,请参阅此官方文档

© www.soinside.com 2019 - 2024. All rights reserved.