1月最後にCakeの話題。

ちょっとしたtips.


小規模なサイトで、システムのリプレイスとかだと、
既存システムを表で動かして、裏(というよりも別でディレクトリ切ってそこに置いといて・・・とか)で新システムを動かすってよくあります。


public_html/ ←すでに既存のシステムが入ってる状態。
public_html/new_system ←new_systemディレクトリを切って、その中にCakeを配置。
↑な状態。


さて、あるタイミングでこれを入れ替えねばならないのですが、
SSHアクセスできるサーバならmvで一発なんだけど、
FTPしかないと、mvに相当することが出来なかったりする。FTPソフトによってはできるみたい。


まぁ、私個人としては、めんどい。


そういうときに、mod_rewriteを駆使(?)して、さもpublic_html以下に置き換えたかのようにする方法。

とりあえずのアクセスできるようにだけなら、
cakephpを回答したときのrootにある.htaccessコピってきて黒字の部分を追加。

RewriteEngine on
RewriteRule ^$ new_system/app/webroot/ [L]
RewriteRule (.*) new_system/app/webroot/$1 [L]


これで、とりあえず、アクセスはできる。
ただ、アクセス後別のページへのリンクは、new_systemがはいってきちゃってるので、
cake/dispatcher.phpを修正する。
修正箇所は、
baseUrl()メソッドの
if文で$dir === 'app'〜〜をしているところ。
その下の行を

$base = dirname($base);

$base = dirname(dirname($base));

に修正する。


これでOK。