.htaccess Zend项目:不允许源代码显示

.htaccess Zend项目:不允许源代码显示,.htaccess,zend-framework,security,php,.htaccess,Zend Framework,Security,Php,今天早上,当我发现默认情况下可以显示http://www.mydomain.com/application/configs/application.ini 我的Zend项目的文件 更令人不安的是,当指向最终URL时,可能会显示.phtml页面的php源代码,如http://www.mydomain.com/application/views/scripts/index/index.phtml 因此,我真的需要保护我的网站。我确信使用公用文件夹中main.htaccess的正确语法可以防止.ini

今天早上,当我发现默认情况下可以显示http://www.mydomain.com/application/configs/application.ini 我的Zend项目的文件

更令人不安的是,当指向最终URL时,可能会显示.phtml页面的php源代码,如http://www.mydomain.com/application/views/scripts/index/index.phtml

因此,我真的需要保护我的网站。我确信使用公用文件夹中main.htaccess的正确语法可以防止.ini文件和源代码显示

你能帮我吗

我考虑过这种语法,但我不会将.htaccess文件复制到我所有的文件夹中。我只想将规则写入一个文件

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost.*$ [NC] 
RewriteRule .*\.(phtml|php)$ - [F]
编辑 我的目录结构是:

ProjectDir
 |_application
 | |_configs
 | |_controllers
 | |...
 |
 |_public
 | |_index.php
 | |_css
 | |_js
 | |_.htaccess
 |
 |_library
   |_Zend

应用程序目录不应位于公共目录中,而应位于web根目录之外

zend项目的普通目录树应该如下所示,其中web根指向ProjectDir/public/:

ProjectDir
 |_application
 |
 |_public
 | |_index.php
 | |_css
 | |_js
 | |_img
 | |_.htaccess
 |
 |_library
   |_Zend

。。。etc

一切似乎都太低了

web根目录似乎是您的ProjectDir

在此目录中,您只希望拥有公用文件夹的内容

应用程序和库目录需要升级一级。你应该可以用你的主机界面来实现这一点

如果无法修改vhost,则结构应如下所示:

|_application
|
|_library
|   |_Zend
|
|_ProjectDir
    |_index.php
    |_css
    |_js
    |_img
    |_.htaccess

谢谢您的评论,但我的应用程序文件夹未包含在我的公用文件夹中。我使用的是如上所述的标准目录树,不确定什么是webroot点,但我的网站入口点是:这就是问题所在,您的webroot指向ProjectDir/而不是ProjectDir/public/。您的网站应该可以从domain.com/index.php而不是domain.com/public/index.php访问。您需要编辑您的配置并将web根目录指向/path/to/ProjectDir/public/Ok,我理解。此时,我的domain.com/index.php文件是:header'Location:public/index.php';我没有访问httpd.conf的权限,因为我的项目是由互联网提供商托管的。如何/在何处设置正确的配置web根目录?是否继续使用domain.com/public/index.php访问您的网站?或者您希望它是domain.com/index.phppost您的目录结构和当前的.htaccess谢谢您的评论。我使用的是标准的Zend目录树,你能解释一下否决票吗?我一直在做一个项目,由于生产服务器的设置,我需要将整个Zend应用程序放在公用文件夹中。我可以在.htaccess中隐藏应用程序代码:RewriteRule application/*-[F]谢谢您的建议。你把.htaccess放在哪里来隐藏应用程序代码?在我的例子中,我在你的设置中有根目录ProjectDir中的所有代码,所以我把.htaccess文件放在那里。