使用 AWS EC2 或 Beanstalk 删除 Laravel 5 中的公用文件夹

Posted

技术标签:

【中文标题】使用 AWS EC2 或 Beanstalk 删除 Laravel 5 中的公用文件夹【英文标题】:Remove public folder in Laravel 5 using AWS EC2 or Beanstalk 【发布时间】:2018-11-13 19:26:57 【问题描述】:

在本地环境中,我可以导航到 domain.com/app,但在 AWS 中,它只有在我使用 domain.com/public/app 时才有效。我已经尝试了多种方法来让它在没有公用文件夹的情况下解决

我已经尝试了两种不同的方法:

添加了 .htaccess mod_rewrite 但它在下面提供了一个错误。

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

compiled.php 第 7610 行中的 Laravel NotFoundHttpException。

我不想将 server.php 重命名为 index.php,因为这不是最安全的方法。

在 /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]


</IfModule>

使用 Homestead 获取 http 到 https 的任何其他方式?

【问题讨论】:

您将域指向哪个目录? 它指向公共文件夹。在配置 app.php 我有 'url' => env('APP_URL', 'example.com'), 在这种情况下,我会尝试运行php artisan route:clear &amp;&amp; php artisan clear-compiled &amp;&amp; php artisan optimize &amp;&amp; php artisan cache:clear 试过了,仍然必须去example.com/public/app,但在本地主机我可以直接去example.com/app 【参考方案1】:

在你的虚拟主机文件中将 documentroot 指向 laravel 的公共文件夹

【讨论】:

查看此链接laravel-recipes.com/recipes/25/creating-an-apache-virtualhost

以上是关于使用 AWS EC2 或 Beanstalk 删除 Laravel 5 中的公用文件夹的主要内容,如果未能解决你的问题,请参考以下文章

ec2 没有使用 AWS beanstalk 响应 443

AWS 仅允许用户访问弹性 beanstalk 实例和存储

从 AWS Beanstalk 应用程序连接到 AWS EC2

使用 Elastic Beanstalk 创建时的 AWS EC2 .pem 证书

AWS - 配置从 Beanstalk 应用程序对 EC2 实例的访问

使用 AWS Elastic Beanstalk 将多个应用程序部署到单个 EC2 实例