2013-04-20 28 views
2

我在godaddy託管部署了一個laravel應用程序。我用方案二從http://forums.laravel.io/viewtopic.php?id=1258Laravel安裝在godaddy託管中,如何防止訪問/公開使用.htaccess

現在我已經工作laravel應用程序,訪問或者使用http://domain/http://domain/public/

我想關閉的訪問http://domain/public/所以一切都將通過http://domain

我試試這個送達htaccess的規則,但我仍然可以訪問http://domain/public/

RewriteCond %{REQUEST_URI} ^public 
RewriteRule ^public/(.*)$ $1 [L] 

或者說,有沒有什麼辦法來設置GoDaddy的託管,所以我湊ld將公用文件夾設置爲域的文檔文件?

謝謝。

回答

0

我們決定關閉GoDaddy的託管帳戶的規則和移動到a2hosting,我可以把laravel文件夾放在主目錄中,在public_html文件夾之外。

+0

順便說一下,Godaddy Shared託管也可以做同樣的事情,因爲它們允許SSH訪問,它允許您訪問高於public_html一級的目錄。同樣,即使作曲家也可以安裝在Godaddy上。這裏是說明 - http://webdlabs.com/2014/03/using-composer-on-godaddy-shared-host/ – 2014-08-11 10:21:43

6

您不僅要重寫,還要重定向客戶端。在這裏不需要的RewriteCond,因爲RewriteRule已經限制了public/只請求

RewriteRule ^public/(.*)$ $1 [R,L] 

但是,現在你有一個無限循環,重寫和重定向來回。爲了打破循環,你需要檢測,如果該請求已經被改寫

RewriteCond %{ENV:REDIRECT_STATUS} 200 
RewriteRule^- [L] 

把一切在一起,包括來自Laravel論壇

RewriteEngine on 

# prevent endless loop 
RewriteCond %{ENV:REDIRECT_STATUS} 200 
RewriteRule^- [L] 

# redirect client to non-public 
RewriteRule ^public/(.*)$ $1 [R,L] 

# send real page to client 
RewriteCond %{REQUEST_URI} !^public 
RewriteRule ^.*$ public/$0 [L] 
+0

我試過上面的規則,但我仍然可以訪問'http:// domain/public /'頁面,響應代碼爲200.如果我訪問'http:// domain/public',我得到301重定向到'http:// domain/public /' – 2013-04-21 01:28:24

+0

@DonnyKurnia從'public'到'public /'的'301'重定向不是來自這些規則,而是來自['DirectorySlash'](http://httpd.apache。組織/文檔/電流/ MOD/mod_dir.html#directoryslash)。 – 2013-04-21 01:53:23

+0

如果您想要託管多個Laravel和多個域/子域的實例,該怎麼辦?如何通過GoDaddy託管來解決這個問題? – Malchesador 2016-07-19 15:04:42

相關問題