我想设置我的codeigniter项目,以便我可以在我的网络服务器上的任何文件夹中使用它。不幸的是,codeigniter要求我在配置的几个变量中指定位置。这是便携性的问题。
有三个地方我看到了这个:
1) $config['base_url']
2) $config['base_path']
3) .htaccess RewriteRule
到目前为止,我已经找到了解决方案(1): http://codeigniter.com/wiki/Automatic_base_url/
我正在寻找(2)和(3)的解决方案,但最重要的是(3)。以下是一个示例情况:
我将.htaccess设置为具有RewriteRule,如下所示:
RewriteRule ^(.*)$ /folderA/index.php/$1 [L]
然后我进入我的仓库并将项目检查到另一个文件夹以进行一些单独的更改。现在我必须更新.htaccess以显示以下内容:
RewriteRule ^(.*)$ /folderB/index.php/$1 [L]
我想设置它,所以当我查看另一个副本时,我不必进行任何配置更改。
答案 0 :(得分:1)
由于您似乎正在运行Apache,因此最简单的方法可能是设置虚拟主机并使用您找到的“自动基本URL”技巧。例如,您可以让localhost.folderA
文档根C:\...\folderA
和localhost.folderB
包含文档根C:\...\folderB
。
通过快速的互联网搜索“Apache如何设置虚拟主机”,this page看起来很有希望获得有关如何在Windows上设置Apache虚拟主机的完整说明。请尝试按照其site1.local
替换为localhost.folderA
并将site2.local
替换为localhost.folderB
来执行其说明。
答案 1 :(得分:0)
我不确定你可以让.htaccess
便携,根据我的经验,mod_rewrite的东西开始时非常敏感,更不用说让它变得便携了。
至于(2)我不完全确定这是必需的。但是,您可以在index.php的顶部进行定义,获取文件的位置并保存,然后在配置文件中取出定义。
答案 2 :(得分:0)
对于您的基本路径,您可以:
$config['base_path'] = $_SERVER['DOCUMENT_ROOT'];
或强>
$config['base_path'] = dirname(FCPATH) . '/';
以及基本网址
$config['base_url'] = 'http://' . $_SERVER['SERVER_NAME'] . dirname($_SERVER["SCRIPT_NAME"]);
编辑:
$config['base_url'] = dirname($_SERVER["SCRIPT_NAME"]);
这是更干净但使用相对网址