基于codeigniter中的域提供不同的内容

时间:2010-10-09 15:28:19

标签: php codeigniter multiple-domains server-variables

我打算用codeigniter开发一个网站。但不确定我将要使用的方法是否是最好的方法。同一站点将有许多插件域。但是内容将根据用于访问网站的域进行过滤。

例如如果用户来自域 siteusa.com然后将显示相应特定用户的内容。如果用户来自siteuk.com/sitechina.com,则内容将相应地进行归档等等...

我打算做这样的事情来检测网址并提供内容

 $ref = getenv("HTTP_REFERER");
    echo $ref; 

我看到的另一个问题是codeigniter的baseurl设置,但我看到了here

的解决方案
/*
|--------------------------------------------------------------------------
| Base Site URL
|--------------------------------------------------------------------------
|
| URL to your CodeIgniter root. Typically this will be your base URL,
| WITH a trailing slash:
|
| http://www.your-site.com/
|
*/

if(isset($_SERVER['HTTP_HOST']))
{
$config['base_url'] = isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on' ? 'https' : 'http';
$config['base_url'] .= '://'. $_SERVER['HTTP_HOST'];
$config['base_url'] .= str_replace(basename($_SERVER['SCRIPT_NAME']), '', $_SERVER['SCRIPT_NAME']);
}

else
{
$config['base_url'] = 'http://localhost/';
}

这是最好的方法吗?我可能遇到任何可能的瓶颈吗?

该网站的主域将提供未经过滤的内容,每个插件域将根据后端每个域的过滤器设置对其进行过滤。

2 个答案:

答案 0 :(得分:1)

.htaccess是否可以为您选择一个选项?请注意,CI还有routes.php文件,用于对URL进行细粒度控制,但我认为不在域级别。

答案 1 :(得分:0)

我没有看到这样做的任何问题。这不会造成瓶颈,因为额外的功能可以忽略不计。

对于我为SaaS服务做同样事情的价值我运行的地方是多个网站(数千个)指向相同的代码点火器安装。我没有任何问题。

对于过滤,只需确保设置正确的索引,因为您需要通过HTTP_HOST变量进行查询。