Silex 帮助。谁能解释为啥我在这里收到 404 错误?
Posted
技术标签:
【中文标题】Silex 帮助。谁能解释为啥我在这里收到 404 错误?【英文标题】:Silex Help. Could anyone explain why I'm getting a 404 error here?Silex 帮助。谁能解释为什么我在这里收到 404 错误? 【发布时间】:2017-09-13 18:31:33 【问题描述】:我正在制作一个Silex
应用程序,它从数据库中获取随机图像,然后将其显示在网页上。但是在尝试显示图像时,我不断收到404 error
。这是我的路由代码。
<?php
use Symfony\Component\HttpFoundation\Request, Response;
$app->get('/width/height', function (Request $request, Silex\Application $app, $width, $height)
$image = $app['db']->fetchAssoc("SELECT filename FROM images ORDER BY rand() LIMIT 1");
$placeholder = $app['image']
->make(__DIR__.'/../public/img/' .$image['filename'])
->fit($width, $height)
->greyscale()
->response('png');
return new Response($placeholder, 200,[
'Content-Type' => 'image/png'
]);
)->assert('width', '[0-9]+')->assert('height', '[0-9]+ ');
因为我写的路线有宽度和高度,所以我需要在我的 url 后面加上宽度和高度,我不会收到这些错误。
Errors page
但是一旦我添加了高度,比如说 400 和 400,我得到一个 404 错误页面
404 Page
谁能提供帮助?
【问题讨论】:
您没有给出一个 404 的 URL 示例 - 考虑到问题有点相关 - 但这似乎是错误的:assert('height', '[0-9]+ ')
。您在该模式中有一个尾随空格。
错误表明您没有用于“GET /”请求的路由器。因此,您正在请求您的根文档 (http://what.ever.com/
),它转换为“/”路由。所以你需要添加对$app->get("/", function(...) ...);
的调用
当您在第一个和第二个屏幕截图上看到响应时,您会在浏览器的地址栏中看到哪些完整的 URL?现在看起来您可能正在使用 PhpStorm 自己的内置简单 Web 服务器......它并不适合用于为具有此类动态 URL 的站点提供服务。如果是这样 - 在第一个屏幕截图请求通过您的 Silex 应用程序时,由于您没有 /
的路由,它会生成该错误。在第二次请求中,URL 可能根本无法通过网络服务器的初始路由逻辑......所以它永远不会到达您的 Silex 应用程序。更好地使用适当的 Apache/nginx 来提供网页
您是否启用了 URL 重写?
啊,对不起,伙计们没有包括对我来说非常愚蠢的 URL,但我现在将使用 url 更新图像.. url 末尾的 400/400 是两者的尺寸图片的高度和宽度。
【参考方案1】:
由于您的 404 来自 nginx 而不是来自 silex,我假设您忘记在您的网络服务器上启用 url-rewrites(在您的情况下是 nginx)
我也看到了,这个 sn-p 来自https://www.codecourse.com/lessons/build-a-placekitten-clone
作者在 03:36 (https://www.codecourse.com/lessons/build-a-placekitten-clone/1482) 展示了如何启用重写 但仅适用于 Apache Web-Server,不适用于 nginx
请参阅https://silex.sensiolabs.org/doc/2.0/web_servers.html#nginx 了解如何配置您的 nginx 的更多详细信息
更新:
我认为您可以测试您的图像生成器并看到它在 /index.php/400/400
上工作,但对于更清晰的 URL,您需要重写
【讨论】:
以上是关于Silex 帮助。谁能解释为啥我在这里收到 404 错误?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我在 Maven 动态 Web 模块中收到此 404 错误?
为啥我在运行动态 Web 项目时收到 HTTP 404 错误? [复制]
我在使用 Index.php 加载主页时收到 404,但 index.php 可用于直接链接,为啥?