3

私は単純な MVC 構造を構築しています。私の意図は、単純な URL (ファイルと .php 拡張子なし)、基本的なルールも持つことです。

  • すべてがindex.phpを通過します
  • /index.php/1/2は典型的な URL です。1 つはコントローラー クラスをロードし (そのようなコントローラーが存在する場合)、2 つはメソッドを呼び出します (そのようなメソッドが存在する場合)。

htaccess ファイルの URL からindex.phpを非表示にする方法は次のとおりです。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]

これにより、 /1/2を実行できます

PHP で URL を特定するには、次のようにします。

$url_parts = array_filter(explode("/", $_SERVER["REQUEST_URI"]));

これにより、すべての ny URL セグメントにアクセスできるようになります。$url_parts[0] (コントローラー) と $url_parts[1] (メソッド/関数) に応じて異なるファイルをロードします。

現在、懸念が1つだけあり、次のようなものにアクセスすると、ページで $_GET が機能します。

/1/2?foo=bar

私の $_GET 戻り値:

Array ( [/1/2] => )

私は明らかにそれが欲しいのですが:

Array ( [foo] => bar )

私のコードはまったくサルベージできますか? $_GET がどのように機能するかは明らかにわかりません。これで問題なく機能することを期待していました。

4

1 に答える 1