作者: T.Watanabe
日時: 2009/5/23(11:33)
  ねこ丸です。

藤岡和夫 さんは書きました:

>  ねこ丸さんの言われたのは、Apacheのmod_rewriteを使わない設定でもCakePHP
> は動作するということですね。Routesの設定のところにも説明があるんだけど、mod_rewrite
> を使った場合と使わない場合でURLの表示がまったく同じになるわけでもないら
> しいです。そうでなければmod_rewriteの意味がない。mod_rewriteを使ったほう
> が、pretty URLがより整ったものになる。なんのこっちゃ。これも時間ができた
> ら確かめてみますね。
> 
> http://book.cakephp.org/ja/view/46/Routes-Configuration
> 
>  みなさんの御蔭でそこまでの理解に到達できました^^)

  まさに藤岡さんの書かれている通りです。

1. rewrite の仕事は URI そのものの書き換え
  (これでかっこいい URI を作る)
2. フレームワークの仕事は書き換え終えた URI から Controller, Action への
  マッピング(routing)

  です。この順番で別々に仕事をしています。

  でびさんの書かれた .htaccess の例は rewrite だけでなくアプリケーショ
ンの起動そのものを担う役割を果たしています。これは Cake かどうかとは無
関係で、シンプルな CGI であっても関係する話を含んでいます。したがって除
外して考えないとハマりやすいです。


>  CakePHPを使うことそのものが目的ではなくて、MVCフレームワークを支えてい
> る技術を理解したい。RoRとCatalystにも触っています。まあ、ほんの触りだけ
> ど・・・実は、これを記事にしようとしているんです。慣れていないPHPと悪戦
> 苦闘していました。warningとnoticeの抑制の仕方がようやくわかった^^;)これ
> で一応書ける・・・

  くり返しますが rewrite は「フレームワーク」の構成要素とは異なりますよ。
ただし「アプリケーション全体」の構成要素としては登場しますので、「支え
ている」という表現には含まれるかもしれません。個人的には Web サーバの話
をごっちゃにしない方がよいと思っているので含めてほしくはありませんが。
  また routing は C と A を決定する重要な技術ですが、M はまた別な話にな
ります。(V も当然別。)

# routing だけを担うライブラリもあります。もし routing の話をもっと突っ
# 込みたいならこの手のものに絞って考えると分かりやすいです。結局 Rails
# が起点になるんですが、Python の routes.py が有名です。これの移植版が
# いろいろあります。

  蛇足ですが Apache と rewrite が殊の外大事になってくるのは PHP だから
という理由もあります。PHP は Ruby や Perl などと違って言語そのものが
Web サーバ、アプリケーションサーバの抽象化を行います。だから PHP はスク
リプトにまったく手を加えずに CGI, FastCGI, mod_php で「直接」動きます。
逆に PHP を使いこなすためには Web サーバの設定が直接関わってきてしまい
ますし、Web サーバそのものと PHP という言語そのものの間で調整が必要にな
ります。

# だから IIS で PHP 「対応」という「決定」が重要になってくるんです

  案外というかやっぱりというか、PHP 使いでこの辺の特徴を理解できている
人は多くないですね。

  これが Rails だと Ruby で書かれたサーバがいくつもありますので、これを
使うと Apache のことはあまり気にする必要がなくなります。(もちろんそれ
が可能なホスティングサービスは限られますし、Apache とは異なる運用ノウハ
ウが必要になります。)


  しかしあれですね。こう言っちゃなんですが、みなさんややこしいサーバ使っ
てますねぇ^^;

--
    ねこ丸