URIを考える

WEB+DB PRESSのvol.32 を読む。


http://yohei-y.blogspot.com/2005/08/uri.html

こことかで言われてるように真面目にURIを考えないとダメだなーって思った。


今は

?action=Group_Action

と指定すると

Group/Action.class.php

が実行されるようにすればいいかなーと思ってたんだけど、PHPを作る上でのまとまりとURIとは同一にしない方がいいのかもしれない。
複数のアクションにまとめてフィルタをかけたいという理由でディレクトリを作ることもある。その場合はURIもそれに従う必要は無い。


そういうのは例えば会員専用ページで会員リストを取得する場合

?action=List

というのを

?action=Member_MemberList

に転送するだけでもいいかな。


PATH_INFOを使った場合は

/MemberView/001

というPATHをMemberディレクトリのフィルタを使って

$memberId = $_SERVER['PATH_INFO'][1];
$Request->add('memberId', $memberId);

みたいな感じで。


mod_rewriteではなくてAliasMatchを使った場合のApacheの設定は

AliasMatch ^/(.*\.(js|ico|gif|jpg|png|css))$ /home/foo/public_html/project/htdocs/$1
AliasMatch ^/(.*)$                           /home/foo/public_html/project/htdocs/index.php/$1

とする。
そうすると指定した拡張子(js、ico等)以外のパスにindex.phpを指定できる。

# これをディレクティブ等に書く
# .htaccessではAliasMatchが使えない模様・・