6

I am trying to redirect my website from www to non-www rules as well as http to https (https://example.com) in the middleware. I used to make those redirection change in the web.config such as:

 <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>

I am new to asp.net core and would like to know how can i make those redirection in my middleware? I read this article: https://learn.microsoft.com/en-us/aspnet/core/fundamentals/url-rewriting but it didn't help me to force redirect my www to non-www.

1 Answer 1

6

Install the following NuGet package:

Microsoft.AspNetCore.Rewrite

Add the following line:

app.UseCustomRewriter();

within:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)

Before calling .UseMvc method.

And add the following extensions class to your project:

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

        return app.UseRewriter(options);
    }
}

Within RewriteOptions you can provide your rewrite configuration.

Hoops this will help you out.

Best regards, Colin

Sign up to request clarification or add additional context in comments.

1 Comment

I feel like this answer should be updated with latest dotnet core 2.2 documentation as per here.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.