2015-10-22 157 views
-2

我开发使用laravel和我的网络托管商我还没有找到public目录,这样一个网站,我改变了server.php
安全Laravel网站托管

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目录=>其它目录和文件

+0

不要编辑的server.php文件。只需创建一个名为public – Daan

+0

的目录不起作用,因为我的网络托管服务器不包含公共文件夹 – Snakox

+0

然后自己创建一个目录! – Daan

回答

2

广场一切返回到公用文件夹并将更改恢复到server.php。然后在顶级目录中添加一个.htaccess文件,代码如下:

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

你也可以只是符号链接到公共文件夹,我在使用.htaccess之前遇到了一些问题,所以我更喜欢符号链接。 –

0

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

如果您laravel安装文件夹被称为“laravel”和你的服务器预计“HTML”,以便与它自己的网站的文件夹,你应该做这样的事情:

ln -s laravel/public html 
+0

只是一个说明 - 不少共享网络主机不允许shell访问。 – Jamesking56

+1

确实如此,但是如果他正在构建一个laravel应用程序,我希望他能够访问shell,否则执行Migrations等操作将会是一件非常痛苦的事情。 –