【问题标题】:404 on Laravel Elastic BeanStalkLaravel 弹性 BeanStalk 上的 404
【发布时间】:2020-08-16 02:06:16
【问题描述】:

我正在尝试将 Laravel 7 应用程序部署到 Elastic BeanStalk 但路由出现问题。

我已按照下面视频中的教程进行操作,并上传了包含我所有本地文件的 zip 存档。 在将根设置为 /public 后,我还修复了权限问题。 目前,唯一可见的页面是主页,而其他页面(如 /login、/register 和其他页面显示 404)

这是来自 eb 的日志:

2020/05/01 14:19:30 [错误] 4091#0: *4 open() "/var/www/html/public/login" 失败(2:没有这样的文件或目录),客户端: 82.4.194.3,服务器:,请求:“GET /login HTTP/1.1”

https://www.youtube.com/watch?v=ISVaMijczKc

【问题讨论】:

  • 您解决了吗?我也被困在同一步骤上。
  • 是的,正如 Benjamin 所说,eb 中 PHP 的第二个版本使用 Nginx,我通过使用第一个版本创建另一个实例解决了这个问题

标签: laravel routes amazon-elastic-beanstalk http-status-code-404


【解决方案1】:

我想你正在使用带有 Linux 版本 2 的 Beanstalk PHP 平台;此版本使用 Nginx(而之前的版本使用 Apache)。

更多细节可以看官方文档:https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.PHP

在这种情况下,您必须按照 Laravel 文档中的说明配置 Nginx 进行重定向:https://laravel.com/docs/7.x/deployment#nginx

只需创建文件.platform/nginx/conf.d/elasticbeanstalk/laravel.conf(在项目的根目录下):

location / {
  try_files $uri $uri/ /index.php?$query_string;
}

根据需要随意添加其他配置。

您将在此处找到有关扩展平台的更多详细信息:https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/platforms-linux-extend.html

【讨论】:

  • 首选答案
  • 也为我工作(symfony)。谢谢!
  • 谢谢!在配置中将代理服务器切换到 Apache。现在一切都很好。
【解决方案2】:

经过几次尝试,我已经启动并运行了它。我已删除该应用程序并使用 EB CLI 再次创建它。

我创建了一个环境配置并将其放在.ebextentions 中,然后我添加了AllowOverride All

这是我01-environment.config的内容

option_settings:
 aws:elasticbeanstalk:container:php:phpini:
   document_root: /public
   composer_options: --no-dev
 aws:elasticbeanstalk:application:environment:
   APP_ENV: production
   APP_KEY: base64:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

还有我的.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]
    AllowOverride All
    # Send Requests To Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

【讨论】:

    猜你喜欢
    • 2019-07-18
    • 1970-01-01
    • 2015-04-20
    • 2021-04-01
    • 2018-09-30
    • 2020-08-08
    • 2014-04-11
    • 2020-09-24
    • 2018-06-18
    相关资源
    最近更新 更多