プログラミングノート

プログラミングの備忘録です

Cakephp htaccessでのRewrite設定

Cakephpを使うときプロジェクトを配置しようとして、悩んだことを書きます。

 

ドキュメントルートにフォルダを作成し、その中にindex.phpを置きたいと考えました。そのとき、htaccessファイルの設定に困りました。

 

例として、ドキュメントルートに「project」フォルダを作成し、index.phpファイルを置く場合を書きます。

 

1.index.phpを格納

ドキュメントルートに「project」フォルダを作成し、ダウンロードしたCakephpに含まれているindex.phpファイルを置きます。

 

2.htaccessを作成

コントローラ名をURLから取得するため、Rewriteを設定をします。Rewriteを設定するために、htaccessを作成しindex.phpと同じディレクトリに配置します。

 

以下、htaccessの内容です。

 

1.書き換えを有効にします

RewriteEngine On

 

2.フォルダの場所を指定します

RewriteBase /project

 

3.書き換えの条件を指定します

RewriteCond %{REQUEST_FILENAME} !-f

(%{REQUEST_FILENAME}が存在するファイル名の場合はRewriteしません。)

 RewriteCond %{REQUEST_FILENAME} !-d

(%{REQUEST_FILENAME}が存在するディレクトリ名の場合はRewriteしません。)

 

4.書き換え内容を指定します。

書き換えの条件を満たし、1つ目の正規表現に一致した場合2つ目に書き換えます。

RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

 

[QSA]は「Query String Append」の略で、[QSA]を指定すると、%{QUERY_STRING}が引数として付きます。上の場合、 index.php?url=$1&%{QUERY_STRING} となるそうです。

[L]を指定すると、この後RewriteRuleを使って書き換えません。

 

たとえば、「http://ドメイン/project/test/view」(コントローラ名がtest、メソッド名がview)とアクセスした場合、書き換え後のurlパラメータには「test/view」が入ります。

 

 

Cakephpの導入のために、少しだけRewriteについて学びました。まだまだRewriteについて勉強しないといけないと感じています。また時間があるときに、Rewriteをもっと勉強します。

 

参考

RewriteRuleについて - ハトムネメモ

(参考にさせていただきました。わかりやすかったです。感謝します。)

URLリライティング