使用 Apache 将旧域上的旧路径重定向到新域上的新路径

Posted

技术标签:

【中文标题】使用 Apache 将旧域上的旧路径重定向到新域上的新路径【英文标题】:Redirecting old paths on an old domain to a new path on a new domain with Apache 【发布时间】:2014-09-12 07:20:47 【问题描述】:

假设我有 3 个域:

oldsite.com anotheroldsite.com 和 newsite.com

我需要将旧域中的特定 URL 重定向到新域上的特定路径。如:

oldsite.com/potato => www.newsite.com/how-about-a/potato www.oldsite.com/potato => www.newsite.com/how-about-a/potato 和 anotheroldsite.com/products => www.newsite.com/sub-dir-before/products www.anotheroldsite.com/products => www.newsite.com/sub-dir-before/products

最后,我需要所有不匹配的请求来尝试 www.newsite.com/$1

我在过去一个小时的大部分时间里都在寻找最好的方法来做到这一点,但我似乎找不到任何可以查看具有完全不同路径的旧域和新域的示例。

重要提示:所有域名A记录都指向newsite.com的IP

【问题讨论】:

【参考方案1】:

您必须一次处理一个 URL,具体取决于您可以从旧 URL 映射到新 URL 的方式中获得什么模式。

RewriteEngine On

RewriteCond %HTTP_HOST ^(oldsite\.com|anotheroldsite\.com)$ [NC]
RewriteRule ^potato$ http://newsite.com/how-about-a/potato [L,R=301]

RewriteCond %HTTP_HOST ^(oldsite\.com|anotheroldsite\.com)$ [NC]
RewriteRule ^products$ http://newsite.com/sub-dir-before/products [L,R=301]


...

RewriteCond %HTTP_HOST ^(oldsite\.com|anotheroldsite\.com)$ [NC]
RewriteRule ^(.*)$ http://newsite.com/$1 [L,R=301]

等等

【讨论】:

以上是关于使用 Apache 将旧域上的旧路径重定向到新域上的新路径的主要内容,如果未能解决你的问题,请参考以下文章

将旧域的每个页面重定向到新域上的相同页面URL

重定向到新域上的相同路径

将所有域的所有站点重定向到新域,而不使用尾随查询字符串

htaccess 将旧域重定向到新域

将旧域的所有网页重定向到新域索引

301 将所有页面重定向到新域上的同一页面