2015-10-22 158 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等操作將會是一件非常痛苦的事情。 –