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

Php 单个codeigniter应用程序的通配符子域,php,codeigniter,wildcard,subdomain,Php,Codeigniter,Wildcard,Subdomain,基本上,我正在尝试制作一个带有本地化子域的codeigniter应用程序,如果我访问: ca.site.com->它将运行相同的系统,但显示加拿大内容。 us.site.com->仍然运行相同的系统,但显示美国内容 另外,如果我访问www.site.com,它将使用ip2country自动获得适当的本地化,并将像if from uk、redir一样重定向到uk.site.com 只有一个系统文件夹和一个应用程序文件夹: 根 /系统 /应用 index.php 现在,我希望URL保持不变,不受任何

基本上,我正在尝试制作一个带有本地化子域的codeigniter应用程序,如果我访问:

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

另外,如果我访问www.site.com,它将使用ip2country自动获得适当的本地化,并将像if from uk、redir一样重定向到uk.site.com

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

根 /系统 /应用 index.php

现在,我希望URL保持不变,不受任何本地化的影响。比如:

uk.site.com/profile/1将访问配置文件控制器 ca.site.com/profile/3还将访问uk.site.com使用的相同控制器

我将如何实现这一点


如果我的询问有点粗鲁,请原谅。但是我希望有人能帮助我。

你必须找到一种方法来允许动态子域重定向(显然,使用一点.htaccess mod_rewrite magic是可能的),然后制作一个主控制器,索引方法的第一个参数是语言,然后让子域重定向从
(.*).site.com/(.*)开始
=
site.com/$1/$2
,这应该是可行的,但它没有遵循CodeIgniter的传统MVC方法,更像是一种黑客而不是一种正确的方法,我相信其他人会知道一种更具语义的方法来实现这一点


如果我没记错的话,子域重定向记录在apache.org的某个地方,你会发现比我在

上提供的更多的信息,可能有很多方法可以做到这一点。。。但是我能想到的一个方法是在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/";
…或者,您可以基于$\u SERVER['HTTP\u HOST']值,在$assign\u to\u config数组中重写index.php文件中的base\u url。然后在任何其他控制器或任何你可以根据的东西

$this->config->item('region_prefix');
然后将所有子域指向同一目录,并在应用程序中进行本地化