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

Php 如何使用重定向使CodeIgniter项目可移植,php,.htaccess,codeigniter,redirect,Php,.htaccess,Codeigniter,Redirect,我想设置我的codeigniter项目,这样我就可以在我的Web服务器上的任何文件夹中使用它。不幸的是,codeigniter要求我在配置的几个变量中指定位置。这是一个可移植性问题 我在3个地方看到了这一点: 1) $config['base_url'] 2) $config['base_path'] 3) .htaccess RewriteRule 到目前为止,我在这里找到了(1)的解决方案: 我正在寻找(2)和(3)的解决方案,但最重要的是(3)。以下是一个示例情况: 我将.htac

我想设置我的codeigniter项目,这样我就可以在我的Web服务器上的任何文件夹中使用它。不幸的是,codeigniter要求我在配置的几个变量中指定位置。这是一个可移植性问题

我在3个地方看到了这一点:

1) $config['base_url'] 
2) $config['base_path'] 
3) .htaccess RewriteRule
到目前为止,我在这里找到了(1)的解决方案:

我正在寻找(2)和(3)的解决方案,但最重要的是(3)。以下是一个示例情况:

我将.htaccess设置为具有重写规则,如下所示:

RewriteRule ^(.*)$ /folderA/index.php/$1 [L]
然后我进入我的repo,将项目签出到另一个文件夹,以进行一些单独的更改。现在我必须更新.htaccess以显示以下内容:

RewriteRule ^(.*)$ /folderB/index.php/$1 [L]

我想设置它,这样当我签出另一个副本时,我就不必做任何配置更改。

我不确定你是否可以使
.htaccess
可移植,根据我的经验,mod_rewrite的东西一开始就很棘手,更不用说让它可移植了


至于(2)我不完全确定这是必要的了。但是,您可以在index.php的顶部创建一个define,获取文件的位置并保存它,然后在稍后的配置文件中拉出define。

由于您似乎正在运行Apache,最简单的事情可能是设置虚拟主机并使用您发现的“自动基本URL”技巧。例如,您可以拥有
localhost.folderA
文档根
C:\…\folderA
localhost.folderB
文档根
C:\…\folderB


从“Apache如何设置虚拟主机”的快速Internet搜索中,可以找到关于如何在Windows上设置Apache虚拟主机的完整说明。尝试按照说明将
site1.local
替换为
localhost.folderA
并将
site2.local
替换为
localhost.folderB
对于基本路径,您可以:

$config['base_path'] = $_SERVER['DOCUMENT_ROOT'];

$config['base_path'] = dirname(FCPATH) . '/';
和用于基本URL

$config['base_url'] = 'http://' . $_SERVER['SERVER_NAME'] . dirname($_SERVER["SCRIPT_NAME"]);
编辑:


这更干净,但使用相对URL

,谢谢提示。但我想这样做的原因是,这样我就不用再玩配置文件了。
$config['base_url'] =  dirname($_SERVER["SCRIPT_NAME"]);