基本的MVC结构,URL最小化和GET

时间:2013-11-12 12:49:22

标签: php .htaccess get

我正在构建一个简单的MVC结构,我的意图是也有简单的URL(没有文件和.php扩展名),基本规则:

  • 一切都通过index.php
  • /index.php/1/2 将是一个典型的URL,1加载控制器类(如果存在这样的控制器),2调用方法(如果存在这样的方法)

以下是我在htaccess文件中隐藏 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](方法/函数)加载不同的文件

我现在只有一个问题,如果我访问以下内容,那就是在我的页面上使用$ _GET:

/1/2?foo=bar

我的$ _GET返回:

Array ( [/1/2] => )

而我显然希望它是:

Array ( [foo] => bar )

我的代码可以被抢救吗?我显然不知道$ _GET是如何工作的,我期待这个工作正常。

1 个答案:

答案 0 :(得分:3)

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

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