基本上我正在尝试使用本地化子域创建一个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使用
我将如何实现这一目标?
如果我的询问有点粗糙,请原谅我。但我希望有人可以帮助我。答案 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上提供的更多信息