使用 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 && php artisan clear-compiled && php artisan optimize && 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 中的公用文件夹的主要内容,如果未能解决你的问题,请参考以下文章
从 AWS Beanstalk 应用程序连接到 AWS EC2
使用 Elastic Beanstalk 创建时的 AWS EC2 .pem 证书