我正在 Heroku 上设置 Laravel API。一切似乎都工作正常,我可以访问该网站并查看 Laravel 公共(public)页面。但是当我尝试访问我的 API 路由(注册、登录等)时,它返回 404 错误。
这些路由在我自己创建的虚拟主机上工作正常,但是一旦我将其上传到 Heroku,除了“/”之外的所有路由都返回 404。我已经检查过“index.php/”是否可以工作,但是仍然返回 404。
公共(public)/htaccess
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
RewriteCond %{REQUEST_URI} 1^public
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
配置文件
web: vendor/bin/heroku-php-apache2 public/
路由/api.php
$api = app('Dingo\Api\Routing\Router');
$api->version("v1", function ($api) {
$api->get("/", function () {
return response()->json([
'status' => 'success'
], 200);
});
$api->post("/signup", "MusicShare\Http\Controllers\AuthController@signup");
})
Heroku 日志
2019-06-16T23:04:37.778061+00:00 app[web.1]: 10.35.223.16 - - [16/Jun/2019:23:04:37 +0000] "GET /index.php/routes HTTP/1.1" 200 47843 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.80 Safari/537.36
我的 Heroku 日志不返回错误。所有内容都将状态代码显示为 200,但如果我尝试访问“/api/signup”或“/signup”或“/index.php/signup”,我在 Chrome 中仍然会收到 404
最佳答案
如果您使用的是 apache LAMP
服务器尝试此代码
转到conf文件并编辑它
我正在使用//
为您提交
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
<Directory "/var/www/html"> // here you project path
Options Indexes FollowSymLinks
AllowOverride All // alow all permissions
Require all granted
</Directory>
并重新启动服务器
对于此命令sudo service apache2 restart
然后尝试此命令进行重写
sudo a2enmod rewrite
并且您的子路线运行良好
不要忘记这个命令sudo a2enmod rewrite
关于Laravel API 使用 Heroku Apache 路由 404 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56623361/