2010年01月15日(金)

Zend Framework その3 - リライト設定(Apacheのmod_rewrite)

テーマ: ├ Zend Framework
Zend Framework その2 - マニュアルを読んでみるの続き。

引き続き、Zend Frameworkを初心者がマニュアル読んだだけで使えるようになる?ことを目指していきます。

まず環境設定をします。
リライト機能がZend Frameworkには必須らしいので、その設定から。
ここで言うリライトとは、アクセスしたURLをウェブサーバ内で書き換えて、別のURLに置き換えること。

設定の仕方は、以下の二箇所に載っていました。


上の「D.4. リライト設定ガイド」によると、リライトには以下の三通りのやり方があるようです。
  • バーチャルホスト内でのリライト(Apache使用の場合)
  • .htaccessファイル内でのリライト(Apache使用の場合)
  • Microsoft Internet Information サーバ(IIS使用の場合)
ここでは、2番目のApacheで.htaccessを使う方法を選びます。

■手順

1.Apacheのmod_rewriteを設定

まずはApacheの設定をいじって、mod_rewriteというモジュールを使えるようにします。
そのためには、httpd.confを以下のように書き換えます。

C:\Apache2.2\conf\httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so
リライトモジュールを呼び出す行の、先頭の#(コメントアウト用)を外す。

C:\Apache2.2\conf\httpd.conf
<Directory "C:/Apache2.2/htdocs">
(略)
# Options Indexes FollowSymLinks
Options All
(略)
# AllowOverride None
AllowOverride All
(略)
</Directory>
ドキュメントルートの、Optionsの設定がAllに、AllowOverrideの設定がAllになるように、書き換える。

2..htaccessの作成

次に、.htaccessというファイルを作成します。
ファイルの置き場所は、リライトを実施したいディレクトリ(トップページとか)になります。
ここでするのは動作確認までなので、ひとまずドキュメントルート直下とします。
Windowsの場合、既にあるファイルの名まえをエクスプローラ上で.htaccessに変えようとすると、
拡張子の前に何も無いため、「ファイル名を入力してください」とエラーが出て変えられません。
なので、エディタから直接ファイルを新規作成してから保存するか、もしくは
一旦適当な名まえのファイルを作り、それを開いてから「名前をつけて保存」を選ぶことで
ファイル名を.htaccessにして保存します。

中身の書き方は、上記マニュアル「12.5. 標準のルータ」によると以下の二通りあって、どちらでもいいみたいです。
  • 書き方その1
    C:\Apache2.2\htdocs\.htaccess
    RewriteEngine on
    RewriteRule !\.(js|ico|gif|jpg|png|css|html)$ index.php

  • 書き方その2(こちらの方が推奨)
    C:\Apache2.2\htdocs\.htaccess
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^.*$ index.php [NC,L]
mod_rewriteの設定の仕方、.htaccessの書き方、ここで設定している内容の意味について、
詳しくは以下のApacheのマニュアルを参照してください。

mod_rewrite モジュール URL 書き換えエンジン
http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html(Apache1.3版のマニュアル。日本語)

Apache Module mod_rewrite
http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html(Apache2.2版のマニュアル。英語)


ここまでできたら、Apacheを再起動します。

3.リライトの動作確認

これでmod_rewriteが有効になるはずなので、リライトが正常に動くかのテストをしてみます。

まず、ドキュメントルート直下にindex.phptest.phpという二つのファイルを作ります。
内容は、ブラウザから見て二つの違いがわかるようにしてください。
試しに以下のように書いてみます。

C:\Apache2.2\htdocs\index.php
<?php
print "index";

C:\Apache2.2\htdocs\test.php
<?php
print "test";


そしてhttp://localhost/test.phpにアクセスしてみます。
test.phpにアクセスしたはずで、URLもtest.phpになったままなのに、
ブラウザ画面にはhttp://localhost/index.phpへアクセスした時と同じように表示されていれば成功!
ここでリライトの動作確認のみする場合、.htaccessは書き方その1の方を使ってください。
書き方その2の場合、失敗します。
最後の行「RewriteRule~index.php~」(index.phpへ置換する、の意)の前の行に、
「~[NC,L]」(Lはここで置換処理を終了する、の意)が入ってるからかな…多分。
このLを取っ払えば、ここでのリライト動作確認は成功します。
実際にZend Frameworkを動かすときには、その1もその2もそのままで使えます。


これでリライト設定はできました。

また次回へ続く。→Zend Frameworkその4 - include_pathを設定

  • なうで紹介
  • mixiチェック
  • ツイートする

コメント

[コメント記入欄を表示]

コメント投稿

コメント記入欄を表示するには、下記のボタンを押してください。
※新しくブラウザが別ウィンドウで開きます。

一緒にプレゼントも贈ろう!

トラックバック

この記事のトラックバック Ping-URL :

http://trb.ameba.jp/servlet/TBInterface/shiroharakuina/10434636573/b1e373c8

アメーバに会員登録して、ブログをつくろう! powered by Ameba (アメーバ)|ブログを中心とした登録無料サイト