oas*_*sis 3 php apache .htaccess zend-framework symfony
我仍然不太明白为什么我们必须将index.php保存在公共目录而不是根目录中.
root/of/project
public/
index.php
.htacess
(html, image, css, etc)
Run Code Online (Sandbox Code Playgroud)
然后,在我们的虚拟主机文件中写下以下内容:
DocumentRoot /path/to/myapp/app/public
<Directory "/path/to/myapp/app/public">
# other setting here
</Directory>
Run Code Online (Sandbox Code Playgroud)
然后.htaccess文件将所有不存在的URL重定向到index.php:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
Run Code Online (Sandbox Code Playgroud)
我注意到大多数框架都是这样做的,比如Symfony和Zend,就像本教程一样.通过修改虚拟主机文件的麻烦,实际的好处是什么?
为什么我们不应该做这个,而不是下面没有修改虚拟主机文件?是安全隐患还是什么?
root/of/project
index.php
.htacess
public/
(html, image, css, etc)
Run Code Online (Sandbox Code Playgroud)
如果保留index.php并修改虚拟主机文件更好,那么我们如何修改实时服务器中的虚拟主机文件呢?假设我有这个域名http://my-website.com/,我在浏览器上访问它,我首先看到的不是网页,而是下面的目录,直到我点击公共目录然后我看到了家页,
root/of/project
public/
index.php
.htacess
(html, image, css, etc)
Run Code Online (Sandbox Code Playgroud)
我假设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
文件web
夹成为Symfony
项目文件夹的符号链接.此操作相当于编辑虚拟主机并更改DocumentRoot
我认为您无法执行的操作.
您还可以在另一个问题上查看我的答案,以获得更多说明
归档时间: |
|
查看次数: |
3303 次 |
最近记录: |