htaccess无缝重定向到子文件夹

时间:2015-02-02 04:50:04

标签: apache .htaccess mod-rewrite redirect

我有一个由单个CMS安装提供支持的多语言网站。相关语言由URI触发,因此domain.com/pt在domain.com/en英语时显示葡萄牙语。

但是我希望有两个不同的域名,所以portuguese.com显示了domain.com/pt下的内容,english.com显示了域名下的内容。

我已将这两个域名链接到同一帐户,但在此阶段他们并未真正影响该语言。因此,english.com/pt将显示该网站的葡萄牙语版本,而portuguese.com/en将显示英文版本。

如何编辑我的htaccess,以便english.com在服务器端充当portuguese.com/en和english.com/en,但是用户看到.english.com?同样适用于portuguese.com。

这是我目前的代码:

<IfModule mod_rewrite.c>
RewriteEngine on

RewriteCond %{HTTP_HOST} ^english\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.english\.com$
RewriteRule ^/?$ "http\:\/\/www\.english\.com\/en\/" [R=301,L]

RewriteCond %{HTTP_HOST} ^portuguese.com
RewriteRule (.*) http://www.portuguese.com/$1 [R=301,L]

提前感谢您的帮助!

我尝试了很多我在网上找到的代码,但它们似乎都没有用!

1 个答案:

答案 0 :(得分:0)

在当前规则下添加以下两条规则:

RewriteCond %{HTTP_HOST} ^(www\.)?portuguese\.com$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^((?!pt/).*) /pt/$1 [L,NC]

RewriteCond %{HTTP_HOST} ^(www\.)?english\.com$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^((?!en/).*) /en/$1 [L,NC]