我正在Heroku上设置我的Laravel API。一切似乎都运行良好,我可以转到该站点并查看Laravel公共页面。但是,当我尝试访问我的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>
Procfile
web: vendor/bin/heroku-php-apache2 public/
routes / 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
答案 0 :(得分:0)
如果您使用的是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
答案 1 :(得分:0)
您必须编辑配置变量---在我的网站的Heroku设置中添加了API_PREFIX和API_DOMAIN。