1. TOPTOP
  2. Webサービス
  3. CakePHP

URL rewriting is not properly configured on your server… さくらのクラウドでCakePHPをインストールするときのURLリライティグについて

|

mvc0

先日、自分でCakePHPの初期設定で参考にしたサイト一覧(新しいタブで開く)という記事を書きました。それにもとづき、CakePHP2.5.5をさくらのクラウド(CentOS6.5)にインストルールしてみました。

url_rewriting1

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

url_rewriting2

これでさくらのクラウドにおける、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〉

url_rewriting3

上記の記述を/var/www/html/cake/app/webroot/.htaccessにコピペすると、cakePHPに存在しないファイルにアクセスしたときに、404 not foundを返してくれます。

デフォルトの設定でもCakePHP特有のエラーを返してくれますので、豆知識としてどうぞ。

〔参考サイト〕