如何保护服务器上的php文件不被请求
我对php和web非常陌生,现在我正在学习php中的oop以及如何在.php文件中将我的程序划分为各个类。在此之前,我对php程序的所有了解都是为了将这些文件保存到我的根文件夹中如何保护服务器上的php文件不被请求,php,apache,.htaccess,Php,Apache,.htaccess,我对php和web非常陌生,现在我正在学习php中的oop以及如何在.php文件中将我的程序划分为各个类。在此之前,我对php程序的所有了解都是为了将这些文件保存到我的根文件夹中 home.php 关于.php products.php contact.php 因此,每当客户机在浏览器中请求其中任何一项时 http://www.example.com/home.php http://www.example.com/about.php http://www.example.com/products
http://www.example.com/home.php
http://www.example.com/about.php
http://www.example.com/products.php
http://www.example.com/contact.php
没问题,这些文件将向客户端输出正确的页面
现在,我有个问题。我在根文件夹中也有类似的文件
http://www.example.com/resources/myFunctions.php
我一直在思考的方法是在每个文件的顶部添加这一行exit代码>
或者,我知道有一个叫做.htaccess的东西,它是一个影响Apache工作方式的Apache配置文件
现实生活中的应用程序如何解决这个问题?您确实可以使用任何可用的服务器端配置选项
根据主机的设置方式,您可以修改PHP()的include路径,也可以在Apache站点配置()中将各种文档/目录限制为特定的主机/子网/无访问权限
如果您使用的是共享主机,那么这种级别的锁定通常是不可能的,因此您必须使用Apache重写规则,结合使用易于处理的文件命名约定(即classFoo.inc.php和classBar.inc.php)、.htaccess文件和使用FilesMatch指令来阻止对*.inc.php的访问
FAWW:Apache基金会表示,如果您可以使用该选项,在服务器端配置与使用.HTAccess中更好/更有效。
< P>实际应用程序通常使用所谓的“代码>公有/ < /代码>或<代码> WebOOT/<代码>文件夹,在该项目的根目录中,通过Web请求所有文件。居住在
此.htaccess
文件然后将所有HTTP请求转发到此文件夹,并进行如下内部URL重写:
RewriteRule ^$ webroot/ [L] # match either nothing (www.mydomain.com)
RewriteRule ^(.*)$ webroot/$1 [L] # or anything else (www.mydomain.com/home.php)
.htaccess使用正则表达式匹配请求URI(URL中主机名后的所有内容),并在前面加上webroot/
www.mydomain.com/home.php
变成www.mydomain.com/webroot/home.php
,
www.mydomain.com/folder/file.php
变成www.mydomain.com/webroot/folder/file.php
注意:这在浏览器的url中不可见
如果配置正确,则常规HTTP请求无法访问此文件夹之外的所有文件。但是,您的应用程序(您的php脚本)仍然可以访问这些私有文件,因为php在您的服务器上运行,所以它可以通过文件系统访问这些文件。只需将它们放在公共文件夹之外即可。另外,如果你把退出代码>在顶部,脚本将停止,并且它不会做任何事情。如果它们只是类定义,则无论哪种方式都无关紧要。用户只会看到一个空白页。:)@谢谢你。你是说当我要买我的第一台主机时,他们会给我“公共”文件夹和“私人”文件夹吗?@georoot谢谢。是的,但知道任何人都可以获得私人文件,即使在屏幕上看不到任何东西,这让我感到不舒服。至少他会知道我在服务器上的文件名:(@accountaryم是的,public_html
文件夹之外的任何东西都不能直接访问。