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] (方法/函数)加载不同的文件

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

/1/2?foo=bar

我的 $_GET 返回:

Array ( [/1/2] => )

而我显然希望它是:

Array ( [foo] => bar )

我的代码可以挽救吗?我显然不知道 $_GET 是如何工作的,我希望这能正常工作。

4

1 回答 1

3

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

RewriteRule ^(.*)$ /index.php?/$1 [L,QSA]
于 2013-11-12T12:54:24.587 回答