【问题标题】:Redirect website language mutations to their equivalents on different domain using .htaccess使用 .htaccess 将网站语言突变重定向到不同域上的等效语言
【发布时间】:2019-12-19 21:24:28
【问题描述】:

我有一个使用域名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 中指定语言目录吗?如何?或者有没有更好的解决方案?还是我想错了,这不仅仅是因为两个域的托管相同?非常感谢您的帮助!

【问题讨论】:

    标签: apache .htaccess redirect mod-rewrite multilingual


    【解决方案1】:

    您必须使您的模式匹配起始语言,否则^ 将重定向所有内容。

    你可以使用:

    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]
    

    确保在新浏览器中测试此更改以避免旧缓存。

    【讨论】:

    • 它就像一个魅力!我终于用了你的第二个例子。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2021-07-30
    • 2012-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-16
    • 1970-01-01
    相关资源
    最近更新 更多