Laravel API使用Heroku Apache路由404错误

时间:2019-06-16 23:35:23

标签: laravel apache heroku

我正在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

2 个答案:

答案 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。