我的网络应用程序具有以下目录结构:
app_root/
includes/
config/
db.php
[other config files]
[other include files]
services/
[various php files]
templates/
[html files]
[js/, css/, images/ directories]
index.php
假设我在/var/www/projects/abc/
下有一个应用实例,这意味着app_root为abc/
。可以使用http://host.com/projects/abc/
访问此实例。现在,如果我将所有文件复制到/var/www/projects/xyz/
并更改配置文件,我将使用http://host.com/projects/xyz/
访问第二个实例。
但是,随着应用程序获得错误修复和功能实现,应该为所有实例更新已更改的文件。为了避免这种情况,我想在对等实例中只有配置文件;像这样:
app_root/
includes/
config/
db.php
[other config files]
.htaccess
此方法将所有公共文件保留在abc
实例中,并且每个对等方中只包含特定于实例的文件。
我尝试了以下规则,但对于我提出的请求获得404:
RewriteEngine on
RewriteRule ^/xyz/(.+)$ /abc/$1
我的apache配置中有AllowOverride All
,而.htaccess
规则被选中并以其他方式应用。我错过了什么?
更新
我意识到在访问对等实例时需要传递一个参数。所以目标是改写:
http://host.com/projects/xyz/services/foo.php
到
http://host.com/projects/abc/services/foo.php?instance=xyz
显然services/foo.php
是一条任意路径。
答案 0 :(得分:1)
在xyz/.htaccess
:
RewriteEngine On
RewriteRule (.*) ../abc/$1?instance=xyz [QSA,L]