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:突然言いたくなった しかも古い