Simframeのドキュメントに突っ込み
実はまだインストールはしていませんが、ドキュメントのインストール方法を一通り読んでみて突っ込み。
mod_rewriteの設定
<VirtualHost *:80> ServerName example.com DocumentRoot "/path/to/public" RewriteEngine on RewriteLogLevel 0 RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} -f RewriteRule ^(.*)$ $1 [PT,L] RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME}.php -f RewriteRule ^(.*)$ $1.php [PT,L] RewriteRule ^/(.*)$ /index.php?url=$1 [L] </VirtualHost>
最後の一行を次のように修正すると吉
RewriteRule ^/([^&]*)(&.*)?$ /index.php?url=$1&%{QUERY_STRING} [L]
これで、http://example.com/hoge/&url=fuga?foo=barへのアクセスがindex.php?url=hoge&foo=barへリライトされます。普通にクエリを渡せるようになりました。
また、けしてーーーりらいとしてーーー*1ということで無駄なurl=fugaはきえました。正確にはファイル名のなかに&が現れるとそれ以降が消えます。消さなくてもいいんですが、気持ち悪いんで消しました。消したくないときは次のようにしてください。
RewriteRule ^/(.*)$ /index.php?url=$1&%{QUERY_STRING} [L]
url=なんちゃら ってまずくない?
urlって言うクエリって結構ありうると思うんです。なんかのAPIで使っている場合とかあると困ってしまいますよね。
ですんで、url=なんちゃら をフレームワークで使っちゃうのはどうかと。できればsimframe_urlとかにしたほうがいい気がします。
Mapのテスト
自分の書いたルール付けが正しいかどうか、判断するには、 routes.phpのconnectが終わった後に、次のように一行足してみて、コマンドラインからroutes.phpを実行するとすぐに分かります。使い終わったら、ちゃんとSMap::parseは、routes.phpから削除してくださいね。
それなら次の内容のroutes_test.phpでも作ればいいですよね。
<?php include('routes.php'); print_r(SMap::parse("/uri/hoge/huga")); ?>
設定ファイルをいじってテストするのは危険ですので、公式ドキュメントで勧めるべきではないと思われます。
今後
もう少し時間が出来たらインストールしてみます。
*1:突然言いたくなった しかも古い