如何重定向 wordpress 网站上的域,包括路径?
How to redirect domains on a wordpress site, including path?
我在
我有一个网站有 2 个不同的域指向它自己。
- Domain.com
- Domain.com.br
该站点加载了两个域并创建了重复的内容,这给 SEO 带来了巨大的问题(两个域加载了完全相同的内容。
我希望通过使用 [301] 重定向将一个域重定向到另一个域来解决此问题。
我想保留 Domain.com.br 并重定向 Domain.com。是否可以在同一台服务器上执行此操作?
到目前为止,我遇到了 2 段代码。
- 第一个给我内部服务器错误 (500)。
- 第二个重定向顶级域 (.com >> .com.br) 但没有传递路径,这意味着当您点击 domain.com/path 你仍然加载 domain.com/path
大家怎么看?我该如何解决?
<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
域。
确保这是最重要的规则,并且在测试前完全清除浏览器缓存。
我在
我有一个网站有 2 个不同的域指向它自己。
- Domain.com
- Domain.com.br
该站点加载了两个域并创建了重复的内容,这给 SEO 带来了巨大的问题(两个域加载了完全相同的内容。
我希望通过使用 [301] 重定向将一个域重定向到另一个域来解决此问题。
我想保留 Domain.com.br 并重定向 Domain.com。是否可以在同一台服务器上执行此操作?
到目前为止,我遇到了 2 段代码。
- 第一个给我内部服务器错误 (500)。
- 第二个重定向顶级域 (.com >> .com.br) 但没有传递路径,这意味着当您点击 domain.com/path 你仍然加载 domain.com/path
大家怎么看?我该如何解决?
<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
域。
确保这是最重要的规则,并且在测试前完全清除浏览器缓存。