joomla从2.5版本开始就开始支持多语言,能够实现同一域名下的多语言网站,但joomla本身却不提供多域名对应不同语言的实现。通过研究joomla系统插件languagefilter的运行过程,发现joomla的语言切换是通过url在里面加上语言参数控制的。我们知道,mod_rewrite可以较完美地实现url重写,下面我们就利用.htaccess重写规则来实现joomla下的多域名多语言,测试版本为joomla2.5

一、准备

根据Joomla多语言网站的建设设置好一个网站同一域名下的多语言站点。

二、建立同一个网站另一个域名的vhost配置

假设原先建立的网站域名为joomla25.joomlapod.com,这个已经在apache中配置过,那接下来我们再配置一个域名为joomla25zh.joomlapod.com的域名,映射到同一个网站,步骤如下:

2.1 进入/etc/apach/site-avaiable目录,建立vhost配置文件joomla25zh如下(供参考):

ServerAdmin webmaster@localhost
DocumentRoot /home/fluxyster/www/demosite/joomla25

Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
allow from all

ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/joomla25.log combined
ServerName joomla25zh.joomlapod.com

2.2 进入/etc/apache/site-enabled目录,运行命令

sudo ln -s /etc/apache/site-avaiable/joomla25zh

2.3 重启apache服务器令配置文件生效

sudo apactrl restart

这样就能通过地址http://joomla25zh.joomlapod.com进入网站.

二、配置url的sef重写模式

2.1 进入后台,打开网站->全局配置

在seo设置里将"搜索引擎友好链接"和"使用Apache重写模式"均设为是。

2.2 到网站根目录重命名htaccess.txt为.htaccess,打开.htaccess在最后加下以下代码来重写url规则:

RewriteCond %{HTTP_HOST} ^joomla25zh.joomlapod.com$
RewriteRule ^/?$ http://joomla25zh.joomlapod.com/zh/ [R,L]

(注意:像我网站前台语言默认设置为en-GB,如果是中文zh-CN的话则要把上述代码替换为下面代码):

RewriteCond %{HTTP_HOST} ^joomla25.joomlapod.com$
RewriteRule ^/?$ http://joomla25.joomlapod.com/en/ [R,L]

完成以上步骤网站能够自动识别不同域名对应不同语言

三、重写Language Switcher模板

默认的Language Switcher模板代码只适合单一域名,下面我们对它进行重写以适应不同域名:

3.1 复制/module/mod_languages/tmpl/default.php到/template/beez_20/html/mod_languages/ownlanguage.php

3.2 修改ownlanguage.php

打开ownlanguage.php,在

defined('_JEXEC') or die('Restricted access');
JHtml::_('stylesheet', 'mod_languages/template.css', array(), true);

后加入如下代码:

$count=count($list);
for($i=0;$i<$count;$i++){
switch($list[$i]->link) {
case "/en/":
$list[$i]->link="http://joomla25.joomlapod.com/en/";
break;
case "/zh/":
$list[$i]->link="http://joomla25zh.joomlapod.com/zh/";
break;
}
}

3.3 设置模块的备用布局

进入系统后台,点击扩展->模块管理,在选择类型筛选卡里选择"语言切换器",打开启用中的语言切换器模块,在右侧"高级选项"的"备用布局"里选择ownlanguage.php,这样就用我们自定义的模板文件输出,完成后点击"保存并关闭"。

四、查看效果

进入网站首页,测试点击选项卡后能不能正确跳转和进行语言切换,实现的效果可参考http://joomla25.joomlapod.com