Php 基本MVC结构、URL最小化和GET

Php 基本MVC结构、URL最小化和GET,php,.htaccess,get,Php,.htaccess,Get,我正在构建一个简单的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}

我正在构建一个简单的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\u部分[0](控制器)和$URL\u部分[1](方法/函数)加载不同的文件

我现在只关心一个问题,那就是在我的页面上使用$\u GET,如果我访问以下内容:

/1/2?foo=bar
我的$u获得回报:

Array ( [/1/2] => )
而我显然希望它是:

Array ( [foo] => bar )

我的代码能被挽救吗?我显然不知道$\u GET如何工作得那么好,我希望它能正常工作。

看看
QSA
(查询字符串附加)标志,例如

RewriteRule ^(.*)$ /index.php?/$1 [L,QSA]

好东西!这很好,唯一的缺点是/1/2仍然在$\u GET上,但我想这是我实现的一个“缺点”。