很多朋友想将自己的 Laravel 项目放在虚拟主机上运行,但是有一个问题就是 Laravel 的入口文件在public目录下。然而,很多虚拟主机并不支持自定义项目根目录,这该怎么办呢?
原因分析:
1、从虚拟主机运营商的角度来看,为了最大限度地控制用户的使用,他们通常只开放一个根目录放置一个网站程序。如果用户想要使用更多的程序,只能另行购买,以达到盈利减负的目的。
2、Laravel 的设计思想则是为了更加安全地管理核心文件,将它们与用户访问的根目录隔离开来,只对外暴露public目录,从而实现了安全和优化的目的。
从综合的角度来看,无论是从虚拟主机运营商的角度还是从 Laravel 的设计理念来看,都是可以理解的。但作为用户,我们当然不能一味地接受现状,需采取一些解决方案来处理这个问题。
有人曾提出移动文件等兼容方案,但这样做可能会破坏项目原本的结构,不易于维护。而我通过尝试,找到了一种更好的解决方案。
一、虚拟主机除了提供根目录外,还提供了跟根目录同级的一些目录,且自己可以新建文件夹的情况下:如图:
提供了 public_html 根目录。在public_html同级目录下新建一个文件夹,文件夹名字随意。假如文件夹名字为 mroow 。
1、将 laravel 源代码里的 public目录下的所有文件拷贝到 public_html 根目录下。
2、将laravel 源代码,全部上传到mro