mod_rewrite 规则可以修改 PHP 中的 require_once 指令吗?
Posted
技术标签:
【中文标题】mod_rewrite 规则可以修改 PHP 中的 require_once 指令吗?【英文标题】:Can mod_rewrite rules modify require_once instructions in PHP? 【发布时间】:2014-05-04 03:32:24 【问题描述】:还是我误解了 mod_rewrite 的用法?
我需要几个 Web 应用程序实例,简单的方法是将所有文件复制到另一个文件夹并修改配置文件以连接到另一个数据库,但我正在尝试根据子文件夹更改连接参数
Options +FollowSymLinks
RewriteEngine On
RewriteRule xyz/config.php config.php?id=xyz [L]
RewriteRule xyz/(.*)$ $1 [QSA]
以及对 config.php 的一些更改
//Default config
config['database'] = 'db1';
config['user'] = 'user1';
...
//config for xyz
if($_GET['id'] == 'xyz')
config['database'] = 'db2';
config['user'] = 'user2';
...
有一个名为 ajax.php 的 php 文件来响应所有 Ajax 请求
require_once('config.php');
$task = $_GET['task'];
if($task == 'some_task')
//Task according to ajax request
else ($task == 'another_task')
//...
【问题讨论】:
【参考方案1】:没有。 mod_rewrite
发生在 PHP 执行开始之前,仅影响 Apache 服务文件的方式(它实际上并没有改变文件系统中的任何内容,因此它不会影响 PHP)。
但是,您可以使用$_SERVER['REQUEST_URI']
参数来确定要加载的配置文件。
例如
if(substr($_SERVER['REQUEST_URI'], 0, 4) == 'xyz/')
$config = include('/path/to/xyz/config.php');
else if(substr($_SERVER['REQUEST_URI'], 0, 4) == 'abc/')
$config = include('/path/to/abc/config.php');
...等
【讨论】:
以上是关于mod_rewrite 规则可以修改 PHP 中的 require_once 指令吗?的主要内容,如果未能解决你的问题,请参考以下文章