为什么访问部署在 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
)。
所以,我在 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
)。