cab*_*ret 6 php model-view-controller mobile codeigniter codeigniter-2
我还在试图想办法让移动网站运行起来.我在CodeIgniter中有一个Web应用程序,我想创建它的移动版本.但是,我不想重写太多的代码,特别是我的模型.(因为它们返回我可以在任何地方使用的原始数据.)
我想在子域(m.mydomain.tld)上运行我的移动网站.桌面版本运行于www.mydomain.tld.我尝试将子域指向我的CI应用程序文件夹; 当移动浏览器到达时www.mydomain.tld,我将其重定向到m.mydomain.tld.正如我所说,这个子域指向我的CI应用程序文件夹; 然后我提供移动优化的控制器和视图.
然而!如上所述app/config/config.php,我的应用程序的base_url是:
$config['base_url'] = 'http://www.mydomain.tld/';
所以重定向到m.mydomain.tld没有真正起作用,因为我仍然被重定向到www我不想要那个,即使它然后做了我想要它做的事情.
我试图解决这个问题的方法是制作两个具有不同控制器/视图的应用程序文件夹,但共享模型等等.所以,我正在试图找到一种方法来重构我的CodeIgniter应用程序,以便我可以共享我的模型和'自定义controller'(MY_Controller),以及不同应用程序之间的一些自定义库/帮助程序.
我希望这很清楚,如果不是,我会很乐意解释更多我正在寻找的东西.非常感谢!
在 config.php 中替换$config['base_url'] = 'http://www.mydomain.tld/';为:
if(isset($_SERVER['HTTPS']) and 'on' === $_SERVER['HTTPS']) {
$config['base_url'] = 'https://';
} else {
$config['base_url'] = 'http://';
}
$config['base_url'] .= $_SERVER['SERVER_NAME'] . '/';
Run Code Online (Sandbox Code Playgroud)
这将从 Apache/服务器环境变量中获取 URL,因此如果您通过子域访问该站点,它将使用子域 URL,或者如果您通过根域访问它,它将使用根域。
我不是 CI 专家,所以可能还有其他方法,但这是我所知道的最简单的解决方案。