cakePHPで他のPHPファイルを直接動かす。.htaccessとmod_rewrite | 昭和56年生まれが株FXとか原油とかに投資するブログ

昭和56年生まれが株FXとか原油とかに投資するブログ

気づけばもう40歳になろうとしている
20歳のころから大して変わっていないのに

テーマ:
自分での検索は「cakephp htaccess 通常のPHP」で調べた。
cakephpの中で普通のPHPファイルを動かしたかったんだよぉ。

通常だとcakephp内に取り込まれて、当然のようにエラーがでる。
普通のPHPファイルをいかに”フツウニ”動かすかが知りたかった。
試行錯誤のすえできたので備忘録。動いたけど、正しいかどうかはわかりませんのでご注意を。

検索で探しあてたのはこちら「mod_rewrite アイデア〔cake以外のファイルと共存〕」。
おぉやっぱりできるんだね。そうそうmod_rewriteがかかっているからできないんですよね。
普通はサブディレクトリなんかにソフトをインストールして動かないってところで悩むのでしょうか。

だけど、このままコピペしてTOPの.htaccessに貼るものの状況変わらず...orz
やっぱりそんなにうまくはいかないか。
ということで元になっている英語版「Take over the “control” of some urls from CakePHP」を読んでみると、「the .htaccess file in app/webroot.」とあるので扱うのはapp/webrootの.htaccessなのか?
そっちに

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^/stats/(.*)$
RewriteRule ^.*$ - [L]

# Begin CakePHP

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]


をコピペ。。。。けど、やっぱだめ...orz

ということで、ちゃんと頭を使うことに。やっぱ単にコピペとかだめだw
内容を見てみると、4行目「RewriteCond %{REQUEST_URI} ^/stats/(.*)$」は「The added rule is rather simple: if the url starts with /stats stop the interpretation of the .htaccess file. That’s it.」らしいので、/stats以下のファイルはcakephpじゃなく処理ってことか。
おーそりゃだめなわけだ。statsなんてないし。

ということでstatsの部分を自分のファイル名に変更。
あぐぅ、まだだめかー。
待てよ待てよ、やっぱりapp/webrootの.htaccessじゃない気がしてきた。だって/(TOP直下)においているファイルを動かしたいから。
という想像のもとにTOPの.htaccessをいじる。元は

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

なので、その前の部分に追加して、

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^/動かしたいファイル名
RewriteRule ^.*$ - [L]


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

にしてみたところ、OK。

長かったな。というか最初から意味を理解してやらないとだめですねー。反省。
けどそのまま行けたらそれが一番楽だもん!