我如何强制所有 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;
}
希望对你有帮助
在我的 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;
}
希望对你有帮助