2

現時点では、PHPアプリケーションで.htaccessを使用して、レンダリングするページを選択しています。たとえば、URLがurl.com/registerの場合、実際にはurl.com/index.php?page=registerであり、 /Theme/register.htmlのコンテンツ。

ここにあります:

RewriteEngine On
RewriteRule ^(|/)$ index.php?page=$1
RewriteRule ^([a-zA-Z0-9/_-]+)(|)$ index.php?page=$1
RewriteRule ^(.*)\.htm$ $1.php [NC]

別のGETパラメータを使用したい場合、この「かなりのURL」が失われるため、これには満足していません。Modの書き換えを必要とせずにそれを実行する他のフレームワークを見たことがあります。誰かがそれを実行する方法の簡単な例や適切な例を教えてくれるか、説明してくれるといいのですが。

ありがとう!

4

4 に答える 4

3

通常のアプローチは、すべてを*アプリケーションのメインのブーストラップファイルにリダイレクトすることですindex.php

  • 私がすべてを言うとき、私はあなたのパブリックファイルシステム内のファイルまたはディレクトリではないすべてのURLを意味します。

このようにして、PHPは、URLを解析し、どのページをレンダリングする必要があり、どのパラメーターが渡されたかを(動的に)把握するという楽しい仕事を手に入れます。

そこでMVCルーターが登場し、URLをセグメントに分割し、特定のコントローラーを使用する必要があることを示すセグメントと、コントローラーが特定のメソッドを呼び出す必要があることを示すセグメントを特定するタスクがあります。どのセグメントがメソッド呼び出しに渡される必要があるパラメーターであるか。

このアプローチは、たとえばWordPressで使用され、URL解析は、管理者で指定できるURL構造に従って行われます。

また、CakePHPによってMVCフレームワークとして使用され、デフォルトで次のURL構造になりますcontroller_name/method_name/parameter_1:value_1/parameter_2:value_2/。ただし、URLからパラメーターを抽出するRegExを定義するなど、任意の範囲でカスタマイズできます。

以下のコードは、WordPressが生成するデフォルトの.htaccessです。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</IfModule>
于 2012-06-22T22:28:42.850 に答える
1

常に使用mod_rewriteしますが、ルールでページ名を決定しません。それをphpに送信し、パターンに基づいてPATH_INFOから適切な詳細を解析するために使用します。それはルーターと呼ばれます。スタンドアロンの例は通常、コントローラーの実装にかなり関連しているため、私は知りません。

いくつかの実装については、この同様の質問に対する私の回答を確認して、例として見ることができます。

于 2012-06-22T22:24:44.993 に答える
0

index.phpに渡す必要のあるリクエストのタイプを定義するだけです(つまり、登録、削除など)。htaccessでハードコーディングした場合でも、URLで他のサブディレクトリを使用できます。または、htaccessにサブディレクトリを追加して、www.yoursite.com / page/registerのようなこの種のリクエストを定義します

于 2012-06-22T22:22:25.483 に答える
0

あなたはそのようなURLでいくつかの情報を渡すことができます:

url.com/Theme/register

このページを見る

于 2012-06-22T22:22:34.193 に答える