如何重定向 wordpress 网站上的域,包括路径?

How to redirect domains on a wordpress site, including path?

我在

我有一个网站有 2 个不同的域指向它自己。

  1. Domain.com
  2. Domain.com.br

该站点加载了两个域并创建了重复的内容,这给 SEO 带来了巨大的问题(两个域加载了完全相同的内容。

我希望通过使用 [301] 重定向将一个域重定向到另一个域来解决此问题。

我想保留 Domain.com.br 并重定向 Domain.com。是否可以在同一台服务器上执行此操作?

到目前为止,我遇到了 2 段代码。

大家怎么看?我该如何解决?

<IfModule mod_rewrite.c>

  // This have given me an internal server error 500
  
  RewriteEngine On
  RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ [NC, OR]
  RewriteCond %{HTTP_HOST} ^(www)?domain\.com.br$ [NC]
  RewriteRule ^ https://%1domain.com.br%{REQUEST_URI} [R=301,L,NE]


  // This one also isn't working. Only top domain is redirecting. 
  // Request URL does not pass.
  
  RewriteEngine On
  RewriteCond %{HTTP_HOST} ^domain.com$ [OR]
  RewriteCond %{HTTP_HOST} ^www.domain.com$ [OR]
  RewriteCond %{HTTP_HOST} ^www.domain.com.br$
  RewriteRule (.*)$ https://domain.com.br/ [R=301,L]

</IfModule>

以下示例,将重定向 localhost >> localhost/test,但不会重定向 localhost/xyz >> localhost/xyz/test

  RewriteCond %{HTTPS} !on [OR]
  RewriteCond %{HTTP_HOST} ^(www\.)?localhost$ [NC]
  RewriteRule ^ http://localhost:8888/test/%{REQUEST_URI} [R=301,L,NE]

任何帮助都会非常有帮助。谢谢

问题已解决

正如@anubhava 所提到的,代码必须是 topmpost - htaccess 文件中的第一个代码。

我一直收到的所有代码都有效。问题是我将重写规则放在 wordpress 规则之后。这阻止了我的规则被写入,因为之前已经写入了永久链接。

假设两个域都指向相同的 DocumentRoot,您可以在站点根目录 .htaccess 中使用此规则:

RewriteEngine On

RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ [NC]
RewriteRule ^ https://domain.com.br%{REQUEST_URI} [R=301,L,NE]

如果 HTTPS 不在或请求中的主机名是 domain.com 且之前可选 www.,则此规则将重定向到 .br 域。

确保这是最重要的规则,并且在测试前完全清除浏览器缓存。