如何在CAKEPHP应用中嵌套另一个CAKEPHP应用 – TAPD3新版本的部署方案
我们的tapd3新版本(一个CAKEPHP应用)要发布了,但是由于某原因不能代替现有的老版本(另一个CAKEPHP应用)。两个版本必须并存。但域名只有一个(tapd3.oa.com),并且已经被老版本占用着。
那么我们的tapd3新版本只能挂tapd3.oa.com的一个目录下了,目录就暂定为tapd3.oa.com/beta/吧。这样,访问http://tapd3.oa.com/beta时就是访问新版本,访问http://tapd.oa.com的话还是以前的老版本。
方案定下来了,动手进行配置。
注:下文出现的TAPD3_ROOT表示tapd3老版本(一个CAKEPHP应用)的根目录。
1.了解现有的设置:
服务器: apache
配置有虚拟主机:tapd3.oa.com;其DocumentRoot为TAPD3_ROOT/app/webroot;此目录已经打开AllowOverRide
2.设置虚拟主机的DocumentRoot.
把虚拟主机:tapd3.oa.com的DocumentRoot设为TAPD3_ROOT,这个并没有任何影响,效果跟值为TAPD3_ROOT/app/webroot时一样的。因为默认下CAKEPHP的根目录有这样的一个.htaccess文件。
RewriteEngine on
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
这个文件的作用是把当前目录下的所有请求重定向到app/webroot/下面。
3.放入代码。
先把tapd3新版本的代码checkout一份到TAPD3_ROOT目录下(跟config/ controller/ model/ view/ 目录同一级),并以bata命名。
4.修改TAPD3_ROOT目录下的.htaccess文件。
如果Apache没有作其它配置的话,访问http://tapd3.oa.com/beta/时,请求数据应该就会到beta这个目录下面去找。但是CAKEPHP根目录,也就是我们的TAPD3_ROOT目录下面存在着第2步所说的这个.htaccess文件。把http://tapd3.oa.com/beta/这个请求的服务器数据路径被重定向到app/webroot下面去了,以致不能达到我们想要的效果。
这里要改动一下这个.htaccess文件,使访问http://tapd3.oa.com/beta/时,服务器还是去beta目录去查找数据。改变后的.htaccess文件如下:
RewriteEngine on
RewriteRule ^$ app/webroot/ [L]
RewriteCond ${REQUEST_URI} !beta //这句表示请求uri不等于beta时,下面的重写命令才生效。
RewriteRule (.*) app/webroot/$1 [L]
大功做成!
访问http://tapd3.oa.com还是原来的CAKEPHP应用;
访问http://tapd3.oa.com/bata/就是新的CAKEPHP应用啦。
If you enjoyed this post, please consider to leave a comment or subscribe to the feed and get future articles delivered to your feed reader.

k8Q8pk putvrsgcikhn, [url=http://yugqoaoqgfxh.com/]yugqoaoqgfxh[/url], [link=http://xtnegiravean.com/]xtnegiravean[/link], http://ujujfagdqlnq.com/