我正在将托管在 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
到所有规则中,以避免评估其余规则。除了标志之外L
,END
标志还可以避免评估 .htaccess 文件中的任何其他规则。
有关旗帜的更多详细信息,请访问 https://httpd.apache.org/docs/current/rewrite/flags.html