我在共享托管服务器上,我将把zend应用程序放在那里,但是我无法触摸httpd.conf文件来创建一个虚拟主机,因为它是共享主机,他们不允许我这样做。
如果我将index.php文件和.htaccess保存在公共文件夹中,我必须创建一个虚拟主机来隐藏公共网址。
所以,虽然我可以将公共文件夹文件(index.php,.htaccess)放在站点根目录中,因此我不需要为此创建虚拟服务器,并且可以访问我的站点而无需公开在网址中。
如果我把index.php文件从公共文件夹中删除,有什么东西会让我的网站不安全吗?
我说英语不太好,所以很沮丧。我从其他帖子中复制了一些东西来描述我想解释的事情。
我尝试过这种方式但它仍然不起作用,当我输入 localhost / public / zend / 时,它会返回“找不到对象”
目录结构:
zend/
application/
library/
public/
index.php
.htaccess
.htaccess
公用文件夹中.htaccess的内容:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
根文件夹中.htaccess的内容:
SetEnv APPLICATION_ENV development
RewriteEngine On
RewriteRule ^\.htaccess$ - [F]
RewriteCond %{REQUEST_URI} =""
RewriteRule ^.*$ /public/index.php [NC,L]
RewriteCond %{REQUEST_URI} !^/public/.*$
RewriteRule ^(.*)$ /public/$1
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^.*$ - [NC,L]
RewriteRule ^public/.*$ /public/index.php [NC,L]
答案 0 :(得分:0)
那么你在这种情况下无法访问index.php。如果您不能将内容放在Web根目录中,那么最好的办法是将ZF配置为使用public
以外的文件夹作为您的doc根目录,这样您的布局可能如下所示:
application/
library/
modules/
public_html/
index.php
js/
css/
images/
答案 1 :(得分:0)
“public”文件夹是Zend Framework的一个重要关键功能,因为它将Apache限制为只读取该目录中的文件。除了可以通过HTTP访问的公共文件夹之外,您不应该有任何其他内容,并且移动索引文件会引入容易受到攻击的威胁。
请查看this link,这可能会有所帮助。
如果你使用Cpanel this here可能会有用。
答案 2 :(得分:0)
可能有.htaccess和index.php在Apache的htdocs目录中没有任何问题。
没有必要拥有一个名为“public”的文件夹,只是为了将公共部分(公共目录(和应用程序部分(其余项目文件)放在不同的目录中。)应用程序部分不能从用户的浏览器访问(所以把它放在Apache文档根目录之外)
答案 3 :(得分:0)
有许多方法可以让ZF无法将虚拟主机映射到public
文件夹。
This answer突出了其中许多内容。
就个人而言,当我遇到共享主机并且无法重新映射时,我倾向于执行以下操作:
将公用文件夹(index.php,.htaccess,公共资产,如css,js,img等)的内容保存在主机提供的doc root中,并
将应用程序的其余部分向下推送到_zf
这样的文件夹中,我在Deny All
文件中添加了.htaccess
指令。然后,我修改APPLICATION_PATH
中的index.php
设置以指向_zf/application
。
就是这样。
完整详情here。