为什么访问部署在 Heroku 上的 Slim 应用程序时出现 404 Not Found 错误?

Why i get 404 Not Found error when access Slim app deployed on Heroku?

所以,我在 Heroku 上部署了 Slim 应用程序。只有索引路由 (/) 有效,对于其他我得到 404 未找到错误。

这是我的 routes.php 文件


    // index
    $app->group('', function(RouteCollectorProxy $group) {
        
        $group->get('/',  EntryPointController::class . ':index' );
        $group->get('/test',  EntryPointController::class . ':test' );
    });

    
    // api
    $app->group('/api/v1', function(RouteCollectorProxy $group) {
        
        $group->get('/products', ProductsController::class . ':all' );
    });


Procfile 内容:

web: vendor/bin/heroku-php-apache2 public/

对于除索引路由 (/) 之外的所有路由,我收到 404 错误,尽管在本地主机上一切正常。

所以,请问如何解决这个问题?

如果您的根路由有效,那么听起来应用部署正常。您是否上传了 .htaccess 文件来向 Heroku 解释重写规则?从 Slim Docs,你需要这样的东西:

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

这让 Apache 知道将所有不属于现有文件或目录的请求发送到您的索引文件(它将路由到 routes.php)。