Joomla中文教程:构建多重站点
概述
在使用Joomla建站的过程中,虽然最佳实践是为每个站点使用单独的域名、单独的一套Joomla系统以及独立的数据库,但在某些情况下,基于一套Joomla系统构建多重站点也是可行及合理的。虽然这篇文章中的示例站点是基于Linux和Apache的,但是这套方法同样适用于其他比较流行的建站配置。
下面是一个需要使用多站点解决方案的需求实例:
一个名叫“Johnson Candies”的小公司拥有两个独立但相关联的品牌:Red Candy和Yellow Candy。他们需要同时展现在一套Joomla搭建的站点上,但是要有各自独立的首页,并对应着各自的域名,redjohnsoncandy.com和 yellowjohnsoncandy.com;同时它们还会采用完全不同的页面设计方案。
多站点解决方案的优势
基于一套Joomla系统为两个品牌搭建各自独立的站点,可以使Johnson Candies公司省去很多编辑操作的时间,同时可以更方便的在两个站点之间分享一些可以共用的内容或数据,并且可以共用一些诸如联系表单一类的功能。
开始
- 准备域名。首先需要和通常建站一样,为空间绑定一个主域名,并将其他需要用到的域名停放(park)在这个主域名中。本例中,我们以yellowjohnsoncandy.com作为主域名,而将redjohnsoncandy.com停放在其中。
- 安装Joomla。以通常的方式在主域名中安装Joomla,并为两个站点添加相应的内容及菜单项。
- 创建模板。根据设计需求为Red Candy和Yellow Candy创建两套模板,并添加到Joomla根目录/Templates文件夹中;进入模板管理,将这两套模板分别绑定给两个品牌对应的菜单项页面。
添加转向
方法1:创建htaccess转向。
首先我们要在Joomla的全局设置(Global Configuration)中开启“Search Engine Friendly URLs”;关于SEF网址的使用,可以参见“Joomla文档中文翻译 - 如何在Joomla 1.5中使用SEF(search engine friendly)网址
”。
我们要实现的是,每当有对redjohnsoncandy.com这个域名的请求发起,就会转向进入之前搭建的站点中对应着Red Candy品牌的分类博客页面。将下面的代码添加到.htaccess文件中:
#The following rule works, but it changes which domain name displays.
RewriteCond %{HTTP_HOST} ^redjohnsoncandy.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.redjohnsoncandy.com$
RewriteRule ^(.*)$ http://www.yellowjohnsoncandy.com/index.php?option=com_content&view=category&layout=blog&id=3&Itemid=12 [R=301,L]
现在我们的需求已经基本实现,但是有一个很明显的缺陷:虽然用户在输入redjohnsoncandy.com后可以进入Red Candy品牌对应的分类博客页面,但在浏览器中他们还是可以看到当前页面仍是在yellowjohnsoncandy.com这个域名下的。不幸的是,如果我们使用这种htaccess转向的方法,那么这个问题是无可避免的(为了防止生成LOOP)。
方法2:创建PHP Header跳转。
这种方法可以避免方法1中的缺点,使不同品牌的页面能够对应着其各自的域名。与前面为htaccess添加代码不同,这次我们需要修改一个模板文件。打开我们之前为Red Candy创建的模板中的index.php文件,在head中加入以下代码:
<?php
$domain =概述
在使用Joomla建站的过程中,虽然最佳实践是为每个站点使用单独的域名、单独的一套Joomla系统以及独立的数据库,但在某些情况下,基于一套Joomla系统构建多重站点也是可行及合理的。虽然这篇文章中的示例站点是基于Linux和Apache的,但是这套方法同样适用于其他比较流行的建站配置。
下面是一个需要使用多站点解决方案的需求实例:
一个名叫“Johnson Candies”的小公司拥有两个独立但相关联的品牌:Red Candy和Yellow Candy。他们需要同时展现在一套Joomla搭建的站点上,但是要有各自独立的首页,并对应着各自的域名,redjohnsoncandy.com和 yellowjohnsoncandy.com;同时它们还会采用完全不同的页面设计方案。
多站点解决方案的优势
基于一套Joomla系统为两个品牌搭建各自独立的站点,可以使Johnson Candies公司省去很多编辑操作的时间,同时可以更方便的在两个站点之间分享一些可以共用的内容或数据,并且可以共用一些诸如联系表单一类的功能。
开始
- 准备域名。首先需要和通常建站一样,为空间绑定一个主域名,并将其他需要用到的域名停放(park)在这个主域名中。本例中,我们以yellowjohnsoncandy.com作为主域名,而将redjohnsoncandy.com停放在其中。
- 安装Joomla。以通常的方式在主域名中安装Joomla,并为两个站点添加相应的内容及菜单项。
- 创建模板。根据设计需求为Red Candy和Yellow Candy创建两套模板,并添加到Joomla根目录/Templates文件夹中;进入模板管理,将这两套模板分别绑定给两个品牌对应的菜单项页面。
添加转向
方法1:创建htaccess转向。
首先我们要在Joomla的全局设置(Global Configuration)中开启“Search Engine Friendly URLs”;关于SEF网址的使用,可以参见“Joomla文档中文翻译 - 如何在Joomla 1.5中使用SEF(search engine friendly)网址
”。我们要实现的是,每当有对redjohnsoncandy.com这个域名的请求发起,就会转向进入之前搭建的站点中对应着Red Candy品牌的分类博客页面。将下面的代码添加到.htaccess文件中:
#The following rule works, but it changes which domain name displays.
RewriteCond %{HTTP_HOST} ^redjohnsoncandy.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.redjohnsoncandy.com$
RewriteRule ^(.*)$ http://www.yellowjohnsoncandy.com/index.php?option=com_content&view=category&layout=blog&id=3&Itemid=12 [R=301,L]现在我们的需求已经基本实现,但是有一个很明显的缺陷:虽然用户在输入redjohnsoncandy.com后可以进入Red Candy品牌对应的分类博客页面,但在浏览器中他们还是可以看到当前页面仍是在yellowjohnsoncandy.com这个域名下的。不幸的是,如果我们使用这种htaccess转向的方法,那么这个问题是无可避免的(为了防止生成LOOP)。
方法2:创建PHP Header跳转。
这种方法可以避免方法1中的缺点,使不同品牌的页面能够对应着其各自的域名。与前面为htaccess添加代码不同,这次我们需要修改一个模板文件。打开我们之前为Red Candy创建的模板中的index.php文件,在head中加入以下代码:
___FCKpd___1现在用户输入redjohnsoncandy.com后就会被转向至Red Candy对应的页面,并且根域名会变为redjohnsoncandy.com。
总结
基于一套Joomla系统构建多站点的方案仅适用于非常特殊的需求;最简明高效的方法仍是针对不同的站点搭建各自的系统,绑定相应的域名。
SERVER["HTTP_HOST"];
if (($domain == "redjohnsoncandy.com") ||
($domain == "www.redjohnsoncandy.com")) {
header("location: http://www.redjohnsoncandy.com/index.php?option=com_content&view=category&layout=blog&id=3&Itemid=12");
}
?>
现在用户输入redjohnsoncandy.com后就会被转向至Red Candy对应的页面,并且根域名会变为redjohnsoncandy.com。
总结
基于一套Joomla系统构建多站点的方案仅适用于非常特殊的需求;最简明高效的方法仍是针对不同的站点搭建各自的系统,绑定相应的域名。