私は単純な 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 がどのように機能するかは明らかにわかりません。これで問題なく機能することを期待していました。