我如何强制所有 URI 请求到 index.php?

How can I force all URI requests to index.php?

在我的 index.php(在我的项目根目录中)中,我有一个基本的路由系统,它获取 url(使用 $_SERVER[‘REQUEST_URI])并调用适当的“控制器”然后调用适当的“视图”(因此,非常基本的 MVC 的实现)。我的 index.php 中的内容如下所示:

$router= Router::load('Routes.php');
$uri=trim($_SERVER['REQUEST_URI'],'/'); 
require $router->direct($uri);

问题是,我似乎无法让所有请求都转到 index.php。 显然,如果您转到 localhost/myproject/,您将到达 index.php(因此将调用正确的控制器),但是我想要的是,即使您键入 localhost/myproject/contact 首先直接转到 index.php。以便 index.php 可以为您处理路由。

如果您使用的是 Apache,则可以使用 .htaccess 文件重定向 index.php 文件中的每个请求:

RewriteEngine On

RewriteRule ^/index\.php$ - [L,NC]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

如果您使用的是 nginx 服务器,您可以将所有请求重定向到 index.php 文件,并在 .conf 文件中使用以下代码:

location / {
    try_files $uri $uri/ /index.php;
}

希望对你有帮助