一、为什么
如果你把 Laravel 项目放在一个域名子目录中,你可能就要这样访问了:
site.com/subfolder/public/
因为项目的入口是 public 下的 index.php。但是这有一个问题,假设有人访问了下面的路径:
site.com/subfolder/.env
你可能就懵逼了,你暴漏了大量的敏感数据。如果作为域名子目录存在的 Laravel 项目,务必隐藏好 .env 文件。
二、怎么隐
原料:我有一台 Ubuntu 16.04 服务器,网站根目录位于 var/www/html ;一个 Laravel 项目,一个域名 site.com。
预期:我用地址 site.com/forum 访问到我的项目,而且不暴漏 .env 文件。
第一步
将 Laravel 项目放在 /var/www/SalivaForum/ 目录下:
www
|
|-- SalivaForum
|-- app <DIR>
|-- bootstrap <DIR>
|-- config <DIR>
|-- database <DIR>
|-- **public** <DIR>
|-- resources <DIR>
|-- routes <DIR>
|-- storage <DIR>
|-- tests <DIR>
|-- vendor <DIR>
|-- .env
|-- .env.example
|-- .gitattributes
|-- .gitignore
|-- artisan
|-- composer.json
|-- composer.lock
|-- gulpfile.js
|-- package.json
|-- phpunit.xml
|-- readme.md
|-- server.php
第二步
将 public 重命名为 forum,移动到 /var/www/html/forum。
mv /var/www/SalivaForum/public/ /var/www/SalivaForum/forum/
mv /var/www/SalivaForum/forum/ /var/www/html
第三步
这时,为了正常启动,需要修改 /var/www/html/forum/index.php 文件中的两处。
require __DIR__.'/ ../bootstarp/autoload.php';
$app = require_once __DIR__.'/ ../bootstrap/app.php';
//修改为
require __DIR__.'/ ../ ../SalivaForum/bootstrap/autoload.php';
$app = require_once __DIR__.'/ ../ ../SalivaForum/bootstrap/app.php';
为了让网站上传的图片能顺利访问到,还要动手创建一个软连接。
ln -sr /var/www/SalivaForum/storage/app/public /var/www/html/forum/storage
这条命令表示在 forum 目录下创建一个软连接 storage ,它的指向目录 storage/app/public 。
这是,你的项目既可以正常访问,又可以很好的隐藏 .env 文件里的敏感数据。









网友评论