asp.net-core - ASP.NET Core url 仅重写域

标签 asp.net-core url-rewriting .net-core asp.net-core-2.2

我正在尝试将我的旧域更改为新域,并且我的网站上有大量数据。我只需要通过 url 重写来更改我的域。

当我请求时:

www.myolddomain.net/article/seo-friendly-url-for-this-article

我需要永久 (301) 重定向到:

www.mynewdomain.com/article/seo-friendly-url-for-this-article

我如何在 asp.net core 中执行此操作?

最佳答案

你有没有考虑过URL Rewriting Middleware

这很简单。

  1. 将 IISUrlRewrite.xml 文件拖放到应用程序文件夹的根目录中。将其标记为“内容”并将“复制到输出目录”设置为 true,在您的 csproj 中看起来像这样
  <ItemGroup>
    <Content Include="IISUrlRewrite.xml">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
  </ItemGroup>
  1. 在文件中添加以下内容
<rewrite>
  <rules>    
    <rule name="Host replace - Old to new" stopProcessing="true">
      <match url=".*" />
      <conditions>
        <add input="{HTTP_HOST}" pattern="www\.myolddomain\.net" ignoreCase="true" />
      </conditions>
      <action type="Redirect" url="https://www.mynewdomain.com{REQUEST_URI}" redirectType="Permanent" appendQueryString="true" />
    </rule>
   </rules>
</rewrite>
  1. Startup.cs 文件的 Configure 方法中注册 URL 重写模块
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{   
    // Irrelevant code omitted

    using (var iisUrlRewriteStreamReader = File.OpenText(Path.Combine(env.ContentRootPath, "IISUrlRewrite.xml")))
    {
        var options = new RewriteOptions().AddIISUrlRewrite(iisUrlRewriteStreamReader);
        app.UseRewriter(options);
    }

    // Irrelevant code omitted
}

关于asp.net-core - ASP.NET Core url 仅重写域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55837817/

相关文章:

c# - 如何模拟自定义 ValueResolver 构造函数参数

sqlite - EF Core SqLite 内存中没有这样的表?

asp.net-core - 如何在同一个asp.net core mvc Controller 中返回另一个 Action 的 View 结果

c# - ASP.NET 核心 : Disable browser cache

asp.net - 如何在 ASP.NET 中区分/(根)和/default.aspx

linux - 将 SpecFlow 测试添加到 VSCode 中的 .NET Core 项目

asp.net - 413 请求实体太大 - Web API

java - 具有 Angular URL 重写功能的嵌入式 Jetty

html - 指向特定 Angular 2.0 SPA 状态的外部链接不起作用

c# - Renci.SshNet:在30000毫秒内建立连接失败