1

我在共享主机服务器上,我将把 zend 应用程序放在那里,但我不能触摸 httpd.conf 文件来创建一个虚拟主机,因为它是共享主机,他们不允许我这样做。

如果我将 index.php 文件和 .htaccess 保存在公用文件夹中,我必须创建一个虚拟主机以从 url 隐藏公众。

因此,尽管我可以将公共文件夹文件(index.php、.htaccess)放在站点根目录中,因此我不需要为此创建虚拟服务器,并且我的站点无需在 url 中公开即可访问。

如果我将 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]
4

4 回答 4

0

“public”文件夹是 Zend Framework 的一个重要的关键特性,因为它限制 Apache 只能读取该目录中的文件。除了可通过 HTTP 访问的公用文件夹之外,您不应该拥有其他任何东西,并且移动索引文件会引入容易受到攻击的威胁。

看看这个链接它可能会有所帮助。

如果您使用的是 Cpanel ,这可能会很有用。

于 2013-02-24T03:16:39.453 回答
0

可以在 Apache 的 htdocs 目录中拥有 .htaccess 和 index.php 而不会出现任何问题。

有一个名为“public”的文件夹不是强制性的,只是将公共部分(公共目录(和应用程序部分(项目文件的其余部分))放在不同的目录中。应用程序部分不能从用户的浏览器访问(所以放置它在 Apache 文档根目录之外)

于 2013-02-24T07:35:07.523 回答
0

有很多方法可以让 ZF 工作,而无需将虚拟主机映射到public文件夹。

这个答案突出了其中许多。

就个人而言,当我被共享主机困住并且无法重新映射时,我倾向于执行以下操作:

  1. 将公共文件夹的内容(index.php、.htaccess、css、js、img 等公共资源)保存在主机提供的文档根目录中,并且

  2. 将应用程序的其余部分下推到一个文件夹_zf中,就像我在文件中添加Deny All指令一样.htaccess。然后我将APPLICATION_PATH设置修改index.php为指向_zf/application.

而已。

完整的细节在这里

于 2013-02-24T11:28:16.860 回答
0

那么在这种情况下你将无法访问 index.php。如果你不能把东西放在 web 根目录中,那么最好的办法是将 ZF 配置为使用一个文件夹而不是public你的 doc 根目录,这样你的布局可能如下所示:

application/
library/
modules/
public_html/
  index.php
  js/
  css/
  images/
于 2013-02-24T02:32:31.467 回答