使用 .htaccess 将网站语言突变重定向到不同域上的等效语言
Redirect website language mutations to their equivalents on different domain using .htaccess
我有一个使用域名 foo.cz
的 (Joomla) 网站。
此网站具有以下结构的语言变体:
foo.cz/music (the default CZ language has no specific directory)
foo.cz/en/music
foo.cz/fr/music
foo.cz/de/music
foo.cz/es/music
foo.cz/ru/music
现在我注册了新域 bar.com
,我想保持 .cz
网站原样(对于捷克用户),但我需要从其语言突变永久重定向到它们在 bar.com
上的等效项,因此重定向应该是:
foo.cz/music -> do nothing, no redirect, stay where you are!!!
foo.cz/en/music -> bar.com/en/music
foo.cz/fr/music -> bar.com/fr/music
foo.cz/de/music -> bar.com/de/music
foo.cz/es/music -> bar.com/es/music
foo.cz/ru/music -> bar.com/ru/music
请注意,两个域都指向相同的位置,即服务器上的相同文档根目录,因此在物理上,我仍然有一个站点、一个数据库,托管在一个确切的位置。
我想使用 .htaccess
文件来做到这一点,以某种巧妙的方式避免某些 SEO 和 Google 页面排名损坏。这意味着 .cz
默认语言站点内容将保持原样编入索引,其他语言变体将在新域 bar.com
.
下重新编入索引
两个网站都 运行 超过 https
。
我在 .htaccess
中尝试过这样的事情:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?foo\.cz$ [NC]
RewriteRule ^ http://bar.com%{REQUEST_URI} [L,NE,R=301]
...但它没有用...我不想重定向所有内容,只想重定向语言突变。那么我应该在 RewriteCond
中指定语言目录吗?如何?或者有更好的解决方案吗?还是我想错了,这不可能仅仅因为两个域的托管相同?非常感谢您的帮助!
您必须使您的模式匹配起始语言,否则 ^
将重定向所有内容。
您可以使用:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(?:www\.)?foo\.cz$ [NC]
RewriteRule ^[a-z]{2}/ http://bar.com%{REQUEST_URI} [L,NE,R=301]
[a-z]{2}/
将匹配任意 2 个小写字母后跟 /
.
如果您只想匹配某些特定语言,那么这也应该有效:
RewriteCond %{HTTP_HOST} ^(?:www\.)?foo\.cz$ [NC]
RewriteRule ^(?:en|fr|de|es|ru)/ http://bar.com%{REQUEST_URI} [L,NE,R=301]
确保在新浏览器中测试此更改以避免旧缓存。
我有一个使用域名 foo.cz
的 (Joomla) 网站。
此网站具有以下结构的语言变体:
foo.cz/music (the default CZ language has no specific directory)
foo.cz/en/music
foo.cz/fr/music
foo.cz/de/music
foo.cz/es/music
foo.cz/ru/music
现在我注册了新域 bar.com
,我想保持 .cz
网站原样(对于捷克用户),但我需要从其语言突变永久重定向到它们在 bar.com
上的等效项,因此重定向应该是:
foo.cz/music -> do nothing, no redirect, stay where you are!!!
foo.cz/en/music -> bar.com/en/music
foo.cz/fr/music -> bar.com/fr/music
foo.cz/de/music -> bar.com/de/music
foo.cz/es/music -> bar.com/es/music
foo.cz/ru/music -> bar.com/ru/music
请注意,两个域都指向相同的位置,即服务器上的相同文档根目录,因此在物理上,我仍然有一个站点、一个数据库,托管在一个确切的位置。
我想使用 .htaccess
文件来做到这一点,以某种巧妙的方式避免某些 SEO 和 Google 页面排名损坏。这意味着 .cz
默认语言站点内容将保持原样编入索引,其他语言变体将在新域 bar.com
.
两个网站都 运行 超过 https
。
我在 .htaccess
中尝试过这样的事情:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?foo\.cz$ [NC]
RewriteRule ^ http://bar.com%{REQUEST_URI} [L,NE,R=301]
...但它没有用...我不想重定向所有内容,只想重定向语言突变。那么我应该在 RewriteCond
中指定语言目录吗?如何?或者有更好的解决方案吗?还是我想错了,这不可能仅仅因为两个域的托管相同?非常感谢您的帮助!
您必须使您的模式匹配起始语言,否则 ^
将重定向所有内容。
您可以使用:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(?:www\.)?foo\.cz$ [NC]
RewriteRule ^[a-z]{2}/ http://bar.com%{REQUEST_URI} [L,NE,R=301]
[a-z]{2}/
将匹配任意 2 个小写字母后跟 /
.
如果您只想匹配某些特定语言,那么这也应该有效:
RewriteCond %{HTTP_HOST} ^(?:www\.)?foo\.cz$ [NC]
RewriteRule ^(?:en|fr|de|es|ru)/ http://bar.com%{REQUEST_URI} [L,NE,R=301]
确保在新浏览器中测试此更改以避免旧缓存。