如何使用重定向使CodeIgniter项目可移植

时间:2010-06-03 16:32:59

标签: php .htaccess codeigniter redirect

我想设置我的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]

我想设置它,所以当我查看另一个副本时,我不必进行任何配置更改。

3 个答案:

答案 0 :(得分:1)

由于您似乎正在运行Apache,因此最简单的方法可能是设置虚拟主机并使用您找到的“自动基本URL”技巧。例如,您可以让localhost.folderA文档根C:\...\folderAlocalhost.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"]);

这是更干净但使用相对网址