[英]why laravel is not entering into public folder which contains index.php
[英]Why should we keep index.php in the public folder instead of in the root?
我仍然不太明白為什么我們必須將index.php保存在公共目錄而不是根目錄中。
root/of/project
public/
index.php
.htacess
(html, image, css, etc)
然后,在我們的虛擬主機文件中寫下以下內容:
DocumentRoot /path/to/myapp/app/public
<Directory "/path/to/myapp/app/public">
# other setting here
</Directory>
然后.htaccess文件將所有不存在的URL重定向到index.php:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
我注意到大多數框架都是這樣做的,比如Symfony和Zend,就像本教程一樣。 通過修改虛擬主機文件的麻煩,實際的好處是什么?
為什么我們不應該做這個,而不是下方,而無需修改虛擬主機文件? 是安全隱患還是什么?
root/of/project
index.php
.htacess
public/
(html, image, css, etc)
如果保留index.php並修改虛擬主機文件更好, 那么我們如何修改實時服務器中的虛擬主機文件呢? 假設我有這個域名http://my-website.com/ ,我在瀏覽器上訪問它,我首先看到的不是網頁,而是下面的目錄,直到我點擊公共目錄然后我看到了家頁,
root/of/project
public/
index.php
.htacess
(html, image, css, etc)
我假設Zend或Symfony項目也是如此,但是無法修改實時服務器中的虛擬主機文件。 我不擅長這些框架,如果我將Zend項目上傳到實時服務器,我將在下面看到
那么, 如何將 Zend或Symfony項目部署到實時服務器以立即查看您的網頁?
將index.php
保留在項目根目錄之外是一個非常好的主意,原因很簡單:
您不希望您的用戶訪問公共文件夾(index.php,css,js等)中的任何文件。 當你將index.php放在根文件夾中時,你也可以訪問composer.json
文件,例如這是一個安全風險 - 潛在的黑客會知道你在使用什么軟件包,在哪個版本中它更容易執行攻擊。
當你的托管 - 你應該在你的根目錄上有一些public_html
文件夾,它應該是你的Symfony
應用程序的公共文件夾(web),你也應該能夠將文件保存在公共文件夾之外。 如果你不這樣做 - 你真的需要考慮改變托管合作伙伴
編輯 :回答你的評論。 假設您的主機上有public_html
文件夾,並且您想要部署Symfony
應用程序,該應用程序應該可以直接在http://your-domain.com
上訪問。 然后你應該把整個Symfony
項目放在任何地方(但在public_html
文件夾之外),並使public_html
文件夾成為你的Symfony
項目的web
文件夾的符號鏈接。 此操作相當於編輯虛擬主機和更改DocumentRoot
,我認為這是您無法做到的。
您還可以在另一個問題上查看我的答案 ,以獲得更多說明
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.