单个codeigniter应用程序的通配符子域

时间:2011-05-06 07:35:12

标签: php codeigniter wildcard subdomain

基本上我正在尝试使用本地化子域创建一个codeigniter应用程序,以便我访问:

ca.site.com - >它将运行相同的系统,但显示加拿大的内容。 us.site.com - >仍然运行相同的系统,但显示美国内容。

如果我访问www.site.com,它将自动使用ip2country进行正确的本地化,并将被重定向,如果从英国,redir到uk.site.com

只有1个系统文件夹和1个应用程序文件夹:

根 /系统 /应用 的index.php

现在我希望网址能够保持原样。像:

uk.site.com/profile/1将访问配置文件控制器 ca.site.com/profile/3也将访问同一个控制器uk.site.com使用

我将如何实现这一目标?

如果我的询问有点粗糙,请原谅我。但我希望有人可以帮助我。

2 个答案:

答案 0 :(得分:2)

可能有很多方法可以做到这一点...但是我能想到的一个方法是在index.php文件中添加一些内容,其中预先建立的自定义配置值可以执行某些操作像这样...

/*
 * -------------------------------------------------------------------
 *  CUSTOM CONFIG VALUES
 * -------------------------------------------------------------------
 *
 * The $assign_to_config array below will be passed dynamically to the
 * config class when initialized. This allows you to set custom config
 * items or override any default config values found in the config.php file.
 * This can be handy as it permits you to share one application between
 * multiple front controller files, with each file containing different
 * config values.
 *
 * Un-comment the $assign_to_config array below to use this feature
 *
 */
    $region_prefix_var = explode('.', $_SERVER['HTTP_HOST']);
    $assign_to_config['region_prefix'] = $region_prefix_var[0];

然后在你的config.php文件中

global $region_prefix_var;
$config['base_url'] = $region_prefix_var[0].".site.com/";

...或者您可以根据$ _SERVER ['HTTP_HOST']值覆盖$ assign_to_config数组中index.php文件中的base_url。然后在任何其他控制器或任何你可以基于

的东西
$this->config->item('region_prefix');

然后只需将所有子域指向同一目录并在您的应用中进行本地化。

答案 1 :(得分:0)

你必须找到一种允许动态子域重定向的方法(显然它可以用一点.htaccess mod_rewrite魔法),然后创建一个主控制器,索引方法的第一个参数是语言,然后有子域名重定向来自(.*).site.com/(.*) = site.com/$1/$2,这应该有效,但是它不遵循CodeIgniter的传统MVC方法,而且更像是一种黑客而不是正确的方法,我相信别人将会知道一种更加语义化的方式来解决这个问题。

如果我没记错的话,可以在apache.org上的某个地方记录子域重定向,你会发现比google上提供的更多信息