Php Slim框架始终返回404错误
现在,我正在使用slimframework作为开发PHPWebAPI的最简单工具。 使用这两篇文章:Php Slim框架始终返回404错误,php,api,frameworks,slim,Php,Api,Frameworks,Slim,现在,我正在使用slimframework作为开发PHPWebAPI的最简单工具。 使用这两篇文章: 我从那里开始遵循一些步骤。下载Slim框架,放置正确的目录和文件。调整初始声明,如: //1. Require Slim require('Slim/Slim.php'); //2. Instantiate Slim $app = new Slim(); //3. Define routes $app->get('/books', function ($id) { //
//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_模块/mod_rewrite.so->已启用
- Slim.htaccess:
- httpd.conf:
$app->run();
我在我的浏览器上运行它。。。。然后,在本地主机上测试时,我得到了404错误。解决这个问题的办法是什么
仅供参考,这是我目前正在使用的最简单的PHP文件 问题解决了
我的apache实际上是正常的,前面提供的.htaccess文件也是正常的
线索是我使用的URL。
以前我使用了无效的URL,因此它返回404页错误。
当我试图通过这个浏览器访问更新的GET URL时,我才意识到这一点
http://localhost/dev/index.php/getUsers/user1
现在这就行了
当我发现这些陈述时,我才意识到这一点
如果Slim未找到URI与HTTP请求匹配的路由
URI,Slim将自动返回404 Not Found响应
如果Slim找到URI与HTTP请求URI匹配但不匹配的路由
HTTP请求方法Slim将自动返回405方法
不允许使用其值列出HTTP的Allow:标头响应
请求的资源可接受的方法
您在文件中包含index.php是正确的,但这是因为您的mod rewrite工作不正常 请查看以下链接:
在入门部分,您可以看到如何配置服务器(如果您使用的是apache/lighttpd/ngynx)我认为您的问题在于“资源解析器”,因为您在请求时没有定义$id参数,所以请尝试以下操作:
//1. Require Slim
require('Slim/Slim.php');
//2. Instantiate Slim
$app = new Slim();
//3. Define routes
$app->get('/books/:id/', function ($id) {
echo json_encode( getBook($id) );
});
// some stuff
$app->run();
请告诉我们是否可以我在谷歌搜索“SlimFramework404”时发现了这篇文章。这篇文章使我找到了解决问题的办法 问题 我使用slimframework建立了一个站点,并使用以下示例代码表单slimframework.com创建了index.php:
<?php
$app = new \Slim\Slim();
$app->get('/hello/:name', function ($name) {
echo "Hello, $name";
});
$app->run();
现在我可以使用
http://localhost/hello/bob
另外mod_rewrite。因此必须将模块加载到httpd.conf
中,否则您将收到错误500
LoadModule rewrite_module modules/mod_rewrite.so
对我来说,问题是我忘记在我的文档根目录中提供.htaccess
文件
.htaccess
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]
如果你在Ubuntu 16.04上使用Slim,你会得到404错误。从上面的Tod Birdsall中尝试此测试:
如果这行得通的话
这是行不通的
以及与index.php位于同一目录中的.htaccess文件,配置如下:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
</IfModule>
重新启动发动机
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^index.php[QSA,L]
在Apache上仍然会出现404错误
尝试按如下方式打开Apache mod_rewrite并重新启动Apache:
$sudo a2enmod重写
$sudo服务apache2重新启动
Slim API现在应该可以正常工作了,因为提供的.htaccess文件只有在启用mod_rewrite时才能工作,而在干净的安装中这不是默认的
这里是如何关闭mod_rewirte,如果需要的话
$sudo a2dismod重写
$sudo service apache2 restart对于那些因为“上一步”不起作用而仍在搜索答案的人,这对我很有用:
RewriteBase /<base_of_your_project>/
RewriteBase//
为了澄清问题,您以前尝试使用的URL是什么?如果在添加正确的.htaccess
文件后问题仍然存在,请确保您的虚拟主机配置了AllowOverride
选项,以便可以使用.htaccess重写规则:AllowOverride AllOrder deny,allow allow from All
Hi@cutRateGamer,我使用AllowOverride All,但服务器显示错误500。Tod-birdsall answer+anj comment=解决方案谢谢,将一直在挖掘以发现此解决方案。对于将来遇到此问题的人。。。让我来帮你解决这个问题!这个问题不仅可以通过编写正确的url来解决,还可以通过正确的实现来解决。。。请访问此网站并按照步骤操作,瞧!你会得到它的希望它有帮助,有一个伟大的每个人!
RewriteBase /<base_of_your_project>/