精简框架始终返回 404 错误

2022-08-30 15:52:08

这些天我正在使用Slim Framework作为开发php Web API的最简单工具。使用这两篇文章:

我从那里遵循一些步骤。下载Slim框架,放置正确的目录和文件。调整初始语句,例如;

//1. Require Slim
require('Slim/Slim.php');

//2. Instantiate Slim
$app = new Slim();

//3. Define routes
$app->get('/books', function ($id) {
    //Show book with id = $id
});

然后,我相应地修改其余部分。

例如我已经完成了的清单:

  • LoadModule rewrite_module modules/mod_rewrite.so -> enabled
  • Slim .htaccess:

RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ bootstrap.php [QSA,L]

但是,在我运行此语句之后;

$app->run();

我在我的浏览器上运行它....然后,我在我的本地主机上测试时遇到了404错误。解决这个问题的解决方案是什么?

仅供参考,这是我目前正在使用的最简单的PHP文件。(分享链接)


答案 1

问题解决了!

我的apache实际上是正常的,之前提供的.htaccess文件也是正常的。

线索是我使用的URL。以前我使用了无效的URL,因此它返回了404页面错误。当我尝试通过浏览器访问较新的GET URL时,我刚刚意识到这一点;

http://localhost/dev/index.php/getUsers/user1

现在它的工作原理!

一旦我发现这些陈述,我就意识到了这一点;

如果 Slim 找不到具有与 HTTP 请求 URI 匹配的 URI 的路由,Slim 将自动返回 404 Not Found 响应。

如果 Slim 找到的 URI 与 HTTP 请求 URI 匹配但与 HTTP 请求方法不匹配的路由,Slim 将自动返回 405 Method Not Allowed 响应,其中包含 Allow: 标头,其值列出了请求的资源可接受的 HTTP 方法。


答案 2

我在谷歌搜索“slimframework 404”时发现了这篇文章。这篇文章引导我解决了我的问题。

问题

我使用 Composer 设置了一个具有 Slim 框架的网站,并使用以下示例代码表单 slimframework.com 创建一个索引.php:

<?php
$app = new \Slim\Slim();
$app->get('/hello/:name', function ($name) {
    echo "Hello, $name";
});
$app->run();

然后我尝试使用 访问该页面。我找回了一个404页面未找到页面。http://localhost/hello/bob

我能够使用访问该页面。http://localhost/index.php/hello/bob

解决方案

我通过查看(包括带有Composer Slim安装)和Slim框架文档的URL重写部分找到了解决方案。/vendor/slim/.htaccess

我将该文件的副本添加到与我的索引.php文件相同的文件夹中。该文件的内容是:/vendor/slim/.htaccess

RewriteEngine On

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

现在我可以使用.http://localhost/hello/bob


推荐