先日、自分でCakePHPの初期設定で参考にしたサイト一覧という記事を書きました。それにもとづき、CakePHP2.5.5をさくらのクラウド(CentOS6.5)にインストルールしてみました。
URL rewriting is not properly configured on your server...
しかし、記事中の5つの手順に従って行ったものの、どうしてもエラーが出ます。自分のサーバー環境では、リダイレクト設定が正しくできないとのことです。
先日のインストールでは、自宅サーバー(CentOS6.0)を使っていました。環境が異なるので、見慣れないエラーが出たのでしょう。
さくらのクラウドにおけるURLリライティング
Cookbook 2.xのブログチュートリアルで確認すると、ApacheにおいてURLリライティングをするときの、注意事項が4つ挙げられています。
さくらのクラウドの初期設定の場合、1、2、3番の前半までは、すでにチュートリアルと同じでした。両者が異なっていたのは、3番の後半部分です。
さくらのクラウド初期設定の場合
まずはコマンドでApacheの設定ファイルを開きます。
$sudo vi /etc/httpd/conf/httpd.conf
設定ファイルを開いたら、次の記述のところまでカーソルを移動させます。
〈Directory /〉 Options FollowSymLinks AllowOverride All 〈/Directory〉 〈Directory /var/www〉 Options Indexes FollowSymLinks AllowOverride None Order Allow,Deny Allow from all 〈/Directory〉
“Options Indexes FollowSymLinks”と、その下の”AllowOverride None”にご注目ください。
ブログチュートリアルの場合
前者と後者では記述が、2か所異なります。
〈Directory /〉 Options FollowSymLinks AllowOverride All 〈/Directory〉 〈Directory /var/www〉 Options Indexes FollowSymLinks MultiViews AllowOverride All Order Allow,Deny Allow from all 〈/Directory〉
“Options Indexes FollowSymLinks MultiViews“と”AllowOverride All“で、URLリライティングができるようになります。この状態で保存して、次のコマンドを叩いてください。
$sudo service httpd restart
これでさくらのクラウドにおける、CakePHPの初期設定が完了しました。
オプションの設定
すでに大体の作業は終わっていますが、オプションとして4番目の作業があります。ブログチュートリアルからの引用です。
プロダクション環境の設定では、正しくないアセットは、CakePHPを通さないようにしましょう。webrootの.htaccessファイルを次のように修正してください
〈IfModule mod_rewrite.c〉 RewriteEngine On RewriteBase /path/to/cake/app RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !^/(app/webroot/)?(img|css|js)/(.*)$ RewriteRule ^(.*)$ index.php [QSA,L] 〈/IfModule〉
上記の記述を/var/www/html/cake/app/webroot/.htaccessにコピペすると、cakePHPに存在しないファイルにアクセスしたときに、404 not foundを返してくれます。
デフォルトの設定でもCakePHP特有のエラーを返してくれますので、豆知識としてどうぞ。
〔参考サイト〕