从旧页面到新页面的多个 301 重定向的最佳实践

Best practise for multiple 301 redirects from old to new pages

我们最近对 IIS 8、C# 网站进行了一次大型网站重新设计。 我们有大约 2 到 300 个旧页面需要重定向到新页面。所有这些都需要是 SEO 的 301 重定向。

我们正在寻找一些最佳做法来执行此操作,而无需在服务器上维护物理文件。

维护那些 URLS 的数据库,最终可以在启动时加载到内存中。

404 处理程序检查该页面是否存在于该数据库中,并执行重定向。

我不知道有什么解决方案...在 sitecore 或 Umbraco 中,有一些插件可以通过示例来执行此操作。

不过效果很好...如果旧的URL换掉了,那就不用处理了。

您甚至可以在以后扩展该系统,以维护您网站上调用的所有 url 的数据库...引用数组(对于每个路径项):Url + 当前 URl,如果出于某种原因您重命名了一个项目,那么您可以使用包含该项目的所有 URLS 更新您的数据库。

IIS 和 .Net 有多种重定向方式。

在处理请求的代码中:

this.Response.RedirectPermanent("http://www.website.com/new-page/");

在 web.config 文件中(对您来说可能是最简单的方法):

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="301 Redirect 1" stopProcessing="true">
          <match url="^old-page\.htm$" />
          <action type="Redirect" url="new-page" redirectType="Permanent" />
        </rule>
        <rule name="301 Redirect 2" stopProcessing="true">
          <match url="^old-page2\.htm$" />
          <action type="Redirect" url="new-page2" redirectType="Permanent" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration> 

它接受正则表达式,因此如果重定向有一个模式,您可以对此保持乐观。

最后,您可以通过路由模块 (System.Web.Routing.UrlRoutingModule) 和您自己的 IRouteHandler 在基本级别进行完全控制。