【问题标题】:Laravel API routes 404 error using Heroku ApacheLaravel API 使用 Heroku Apache 路由 404 错误
【发布时间】:2019-10-30 13:52:29
【问题描述】:

我正在 Heroku 上设置我的 Laravel API。一切似乎都运行良好,我可以访问该站点并查看 Laravel 公共页面。但是当我尝试访问我的 API 路由(注册、登录等)时,它会返回 404 错误。

这些路由在我自己创建的虚拟主机上运行良好,但是一旦我将它上传到 Heroku,除了“/”之外的所有路由都返回 404。我已经检查过“index.php/”是否可以工作,但是仍然返回 404。

公共/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

【问题讨论】:

    标签: laravel apache heroku


    【解决方案1】:

    如果你使用的是 apache LAMP 服务器试试这个代码

    转到conf文件并编辑它

    我正在使用// 为您提供 comminting

    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

    【讨论】:

    • 我使用 Heroku CLI 进行设置,我没有使用 LAMP 服务器。
    【解决方案2】:

    您必须编辑配置变量 --- 将 API_PREFIX 和 API_DOMAIN 添加到我网站的 Heroku 设置中。

    【讨论】:

      猜你喜欢
      • 2018-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-15
      • 2013-12-26
      • 2014-12-21
      • 2017-10-20
      • 2021-04-12
      相关资源
      最近更新 更多