.htaccess 多个 301 重定向

.htaccess 多个 301 重定向

我正在将托管在 Apache 服务器上的博客移至新域。

博客文章的永久链接保持不变,但有几个页面的 URL 段在新域名上会发生变化。

我的问题是以下是否可行以及如何使用重写规则来做到这一点。

博客文章和旧域名上大多数页面的 URL slug/永久链接在新域名上将保持不变。因此,我想我可以添加一条重定向规则,从 重定向到 ,https://huiskopenomteverhuren.nl/因为https://vastgoedmentor.com它会在新域名上找到相同的 /slug

旧网站的一些页面已移至新的永久链接。因此我需要额外的规则来重定向,例如,https://huiskopenomteverhuren.nl/kennisbank/https://vastgoedmentor.com/resources其他一些页面也执行此操作。

答案1

您可以在服务器配置中创建多个RewriteRule带有正则表达式的指令。您应该从更改永久链接的特定重定向开始。所有其他页面的通用重定向可以添加在最后。

RewriteEngine On

RewriteRule ^/kennisbank(/.*)?$ https://vastgoedmentor.com/resources$1 [END,R=301]
RewriteRule ^/old2(/.*)?$       https://vastgoedmentor.com/new2$1      [END,R=301]
RewriteRule ^/old3(/.*)?$       https://vastgoedmentor.com/new3$1      [END,R=301]

RewriteRule ^/(.*)$           https://vastgoedmentor.com/$1           [END,R=301]

符号(/.*)?将执行带或不带尾部斜杠的重定向,并将任何其他路径详细信息添加到新 URL。因此,它将huiskopenomteverhuren.nl/kennisbank/something-or-nothing变成vastgoedmentor.com/resources/something-or-nothing

更多详情RewriteRule请访问 https://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriterule

由于所有规则都指向不同的域,因此不存在陷入循环的风险。但最好还是将标志添加END到所有规则中,以避免评估其余规则。除了标志之外LEND标志还可以避免评估 .htaccess 文件中的任何其他规则。

有关旗帜的更多详细信息,请访问 https://httpd.apache.org/docs/current/rewrite/flags.html

相关内容