根目录文件结构

--HTML(根目录)
  --laravel
    --public
    --.env
    --composer.json
    --其他laravel文件

 

发现访问https://domain/laravel/public是可以显示根路由的的,其他的路由均返回404

解决办法

第一个问题,访问其他路由

跟着我的步骤来

一:将public文件夹移动到与laravel平级,且自己随便改个名字,在本文章改为app文件夹

# #进入你自己的laravel文件夹
# mv public/ ../app/

现在根目录文件结构更新为:

--HTML(根目录)
  --laravel
    --.env
    --composer.json
    --其他laravel文件
  --app

 

二:要将HTML/app/index.php文件中引用文件更新

打开HTML/app/index.php

require __DIR__.'/../bootstrap/autoload.php';
$app = require_once __DIR__.'/../bootstrap/app.php';

//改为

require __DIR__.'/../laravel/bootstrap/autoload.php';
$app = require_once __DIR__.'/../laravel/bootstrap/app.php';

三:为了让网站上传的图片能顺利访问到,还要手动创建一个软连接。

# #进入你自己的laravel文件夹
# ln -s storage/app/public/ ../app/storage

四:修改nginx/conf/nginx.conf文件

进入自己nginx存放的位置,打开conf/nginx.conf文件
server{
#...

#添加
location /app/{
  try_files $uri $uri/ /safe/index.php?$query_string;
}

#...
}

 

五:nginx -s reload 重启服务器

第二个问题,安全问题

laravel项目放在子文件夹,.env还有其他资源文件是可以直接访问下载到的,而如果是服务器根目录设置在laravel/public下的话,则是可以保护到我们的数据的。

直接访问https://domain/laravel/.env是可以下载到配置文件的,所以我们还需要将所有访问laravel文件下所有文件的请求拒绝

一:修改nginx/conf/nginx.conf文件

进入自己nginx存放的位置,打开conf/nginx.conf文件
server{
#...

#添加
location /laravel/{
		deny all;
	}

#...
}

参考链接 :https://laravel-china.org/articles/5588/install-the-laravel-project-in-the-domain-name-in-the-directory-should-pay-attention-to-the-hiddenenv-file

您或许感兴趣

[2018-06-05]RSA传递AES密钥进行通信(Java 实现)
[2018-05-16]Java socket通信实现DES加密与解密
[2018-07-01]Redis-Cluster集群的理解和搭建
[2018-08-20]egg 生产环境下日志文件输出两份问题

发表评论

电子邮件地址不会被公开。