ASP.NET Core URL重写

Hub*_*y03 4 asp.net iis http url-rewriting asp.net-core

我试图在中间件中将我的网站从www重定向到非www规则,以及将http重定向到https(https://example.com)。我曾经在web.config中进行那些重定向更改,例如:

 <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>
    <rule name="Redirects to www.domain.com" patternSyntax="ECMAScript" 
            stopProcessing="true">
        <match url=".*" />
        <conditions logicalGrouping="MatchAny">
            <add input="{HTTP_HOST}" pattern="^example.com$" />
        </conditions>
        <action type="Redirect" url="https://www.example.com/{R:0}" />
    </rule>
Run Code Online (Sandbox Code Playgroud)

我是asp.net核心的新手,想知道如何在中间件中进行这些重定向?我读了这篇文章:https : //docs.microsoft.com/zh-cn/aspnet/core/fundamentals/url-rewriting,但这没有帮助我强制将www重定向到非www。

小智 5

安装以下NuGet软件包:

Microsoft.AspNetCore.Rewrite
Run Code Online (Sandbox Code Playgroud)

添加以下行:

app.UseCustomRewriter();
Run Code Online (Sandbox Code Playgroud)

中:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
Run Code Online (Sandbox Code Playgroud)

在调用.UseMvc方法之前。

并将以下扩展类添加到您的项目:

public static class ApplicationBuilderExtensions
{
    public static IApplicationBuilder UseCustomRewriter(this IApplicationBuilder app)
    {
        var options = new RewriteOptions()
            .AddRedirectToHttpsPermanent()
            .AddPermanentRedirect("(.*)/$", "$1");

        return app.UseRewriter(options);
    }
}
Run Code Online (Sandbox Code Playgroud)

在RewriteOptions中,您可以提供您的重写配置。

箍,这将帮助您。

最好的问候,科林

  • 我觉得这个答案应该按照 [here](/sf/answers/3908719951/) 使用最新的 dotnet core 2.2 文档进行更新。 (2认同)