.htaccess 基于regex的两个域之间的重定向

.htaccess 基于regex的两个域之间的重定向,.htaccess,url-rewriting,.htaccess,Url Rewriting,我们在两台不同的主机上有两个域,都是wordpress安装的: oldsite.com newsite.com 许多文章被镜像到一个新网站上,标题相同,但url结构不同: 例如: 另一种情况: oldsite.com/posts/article-about-cats newsite.com/news/2018/08/09/article-about-cats 假设文章的标题相同,那么旧站点服务器上的.htaccess中的重写规则是什么?正如我在上面的评论中所提到的,对于第二种场景,您不能有通

我们在两台不同的主机上有两个域,都是wordpress安装的:

oldsite.com
newsite.com
许多文章被镜像到一个新网站上,标题相同,但url结构不同:

例如:

另一种情况:

oldsite.com/posts/article-about-cats
newsite.com/news/2018/08/09/article-about-cats

假设文章的标题相同,那么旧站点服务器上的.htaccess中的重写规则是什么?

正如我在上面的评论中所提到的,对于第二种场景,您不能有通用规则,其中目标URL具有动态部分,例如/2018/08/09/,它不是原始URL的一部分

对于第一种方案,您可以在site root.htaccess中使用此规则:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(?:www\.)?oldsite\.com$ [NC]
RewriteRule ^posts/(.*)$ http://newsite.com/news/$1 [L,NC,NE,R=301]

如果/2018/08/09/是动态部分,每个页面都可以更改,那么您就不能为第二个场景设置通用规则。第一个在重定向规则中很容易处理。谢谢。这就是我害怕的。它是。我想你不能有关于猫的通配符文章。第一个呢?我们可以在规则中使用通配符,但是/2018/08/09/不在源URL中,所以我们不能只在目标中生成它。好的。非常感谢。
RewriteEngine On

RewriteCond %{HTTP_HOST} ^(?:www\.)?oldsite\.com$ [NC]
RewriteRule ^posts/(.*)$ http://newsite.com/news/$1 [L,NC,NE,R=301]