3

サイトナビゲーションを「正しく」実行するための用語とベストプラクティスを知る必要がありますか?方法は、URLを介して質問したときにstackoverflowがルーティングする方法と同様です。

「http://stackoverflow.com/questions/ask」

PHPプログラミングの知識と同じように、おそらく次のようにコーディングします。

"http://stackoverflow.com/index.php?p=questions&act=ask"

うまくいけば、あなたは私が何を意味するのか理解してください。このページナビゲーションおよび要求/応答処理の方法の用語と、可能であれば、この標準/方法を使用してWebアプリケーションを設計するときに覚えておく必要のあるベストプラクティス、制限、またはその他のことを知りたいです。また、これがすべてPHPで行われているのか、ASPまたはRubyでコード化されたWebバックエンドで行われているのか、あるいは何をしているのかさえわかりません。そのため、タグに推測を入力しました。

4

3 に答える 3

9

ほとんどの MVC フレームワークが使用するパターンは、ルーターを呼び出すフロント コントローラーです。フロント コントローラーは通常、index.phpWeb ルート内にあります。次に、既存のファイル (js、css、画像アセットなど) に対するものではないすべてのリクエストを、このコントローラーに送信する必要があります。Apache では、 mod_rewriteでこれを行うことができます:

RewriteRule ^index\.php$ - [F]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . /index.php [L,QSA]

ただし、Apache 2.5 で推奨される方法は、FallbackResourceを使用することです。

FallbackResource index.php

IIS を使用している場合、IIS には同様の機能があります。

ではindex.php、最初に で要求された URL にアクセスできます$_SERVER['REQUEST_URI']。ルーター (Web ルートの外にある必要があります) を含めて、要求 URI でそれを呼び出す必要があります。例:

require '../router.php';

$router = new Router();
$router->process($_SERVER['HTTP_METHOD'], $_SERVER['REQUEST_URI'], $_GET, $_POST);

その後、ルーターは、リクエストのルーティング先となる適切なコントローラーを見つけることができます。MVC フレームワークの詳細を読み、いくつかの を調べて、他の人がどのように実装したかをよりよく理解してください。

于 2012-08-15T15:43:12.073 に答える
2

彼らはあなたが説明しているのと同じ方法 (ナビゲーション変数の埋め込み) を URL 内で使用している可能性が高いですが、それは「内部」で行われています。

このような URL を提示できるようにするメカニズムは、MOD Rewrite と呼ばれます。URL 内の変数の組み合わせと正規表現を使用して、よりユーザー フレンドリーな方法でエンド ユーザーに URL を再表示します。

詳細情報: http://httpd.apache.org/docs/current/mod/mod_rewrite.html

編集:もちろん、これはApache Webサーバーで実行されているコードに適用されます。IIS などの他の Web サーバーには、おそらく同様のモジュールがあります。

また、mod_rewrite は php の範囲外であることにも注意してください。代わりに、実際にはApacheサーバーディレクティブであり、phpが機能する前に呼び出されます.

于 2012-08-15T15:20:48.543 に答える