【问题标题】:Secure Laravel website hosting安全的 Laravel 网站托管
【发布时间】:2015-10-23 00:23:53
【问题描述】:

我使用 laravel 开发了一个网站,但在我的虚拟主机上我没有找到 public 目录,所以我更改了 server.php
来自

require_once __DIR__.'/public/index.php';

require_once __DIR__.'/index.php';

我将public 文件夹的所有内容移到了根目录,网站运行良好,但问题是当我输入http://mywebsite.com/.env 时,我可以显示.env 的内容,所以我的网站不是受保护。

问题:

如何保护我的文件和目录?

我想要的结构示例:

index.php
.htaccess
favicon.ico
img/
css/
js/
laravel/
      app/
      bootstrap/
      database/
      config/
      storage/
     .env
     server.php
     ...

我网站根目录的内容 => 公用文件夹内容

laravel 目录 => 其他目录和文件

【问题讨论】:

  • 不要编辑 server.php 文件。只需创建一个名为 public 的目录
  • 不起作用,因为我的虚拟主机不包含公用文件夹
  • 然后自己创建一个!
  • 如果您的主机使用 cPanel 及其插件域,请将您的 Laravel 安装添加到插件域的目录中,然后将插件域的目录更改为 Laravel 安装的公共目录。

标签: php laravel hosting


【解决方案1】:

将所有内容放回公用文件夹并将更改恢复到 server.php。然后在您的顶级目录中添加一个带有以下代码的 .htaccess 文件:

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

【讨论】:

  • 你也可以只符号链接到公用文件夹,我在使用 .htaccess 之前遇到了一些问题,这就是我更喜欢符号链接的原因。
【解决方案2】:

我个人不会删除公用文件夹。您可以添加一个 .htaccess 文件或创建一个链接到 /public 的符号链接,这两种方法都应该有效,但我通常使用符号链接。

如果您的 laravel 安装文件夹名为“laravel”,并且您的服务器希望“html”是您的网站所在的文件夹,您应该执行以下操作:

ln -s laravel/public html

【讨论】:

  • 请注意 - 不少共享网络主机不允许 shell 访问。
  • 是的,但如果他正在构建一个 laravel 应用程序,我希望他能够访问 shell,否则执行迁移等操作将非常痛苦。
猜你喜欢
  • 2021-05-31
  • 2016-11-15
  • 2018-10-31
  • 1970-01-01
  • 2010-12-05
  • 1970-01-01
  • 2021-10-24
  • 2019-12-07
  • 1970-01-01
相关资源
最近更新 更多