那么好吧.我有很多php文件和一个index.php文件.没有index.php文件,所有文件都无法工作,因为我将它们包含在index.php中.例如.如果有人点击Contact us该URL将变得像index.php?id=contact我一样,我$_GET['id']用来包含contacts.php文件.但是,如果有人找到文件的路径,例如/system/files/contacts.php我不希望该文件被执行.所以,我发现我可以在包含index.php这样的任何文件之前添加,$check_hacker = 1并if在每个以这样开头的文件中使用if($check_hacker <> 1) die();.那么,如何在不打开所有文件并将其添加到每个文件的情况下执行此操作?可能吗?因为我实际上有很多.php文件.也许有其他方法可以禁用观看单独的文件?有任何想法吗?
谢谢.
Ark*_*rkh 10
您可以将index.php单独放在Web目录中.并将其包含的所有文件放在另一个非Web目录中.
假设您的网站http://www.example.com/index.php实际上是/path/to/your/home/www/index.php,您可以将contact.php放入/path/to/your/home/includes/contact.php.没有.htaccess,重写,自动追加.只是一个好的文件结构和一个像需要配置的服务器.
编辑以详细说明我对使用xamp的评论:
在httpd.conf文件中,添加如下内容:
<Directory "/path/to/your/site/root">
Options Indexes FollowSymLinks
AllowOverride all
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
</Directory>
<VirtualHost *:80>
DocumentRoot /path/to/your/site/root
ServerName www.example.org
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
然后在您的Windows主机文件(在C:\ Windows\System32\drivers\etc中)中,添加以下行:
127.0.0.1 www.example.com
Run Code Online (Sandbox Code Playgroud)
我强烈建议使用.htaccess文件来拒绝对index.php不同的文件的所有请求,但我不太确定如何正确地执行该操作.
这可能有效(现在无法测试)但它也会阻止对css,js等的请求:
order deny,allow
<FilesMatch "\.php">
deny from all
</FilesMatch>
<FilesMatch "(index.php)">
allow from all
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)
如果有人知道正确的解决方案,请编辑我的答案.您可以检查以下问题:拒绝直接访问除index.php之外的所有.php文件
所以除了index.php规则之外,你可能只有php文件的FilesMatch.
编辑:新版本的代码似乎工作.
回应Kau-Boy:
将所有php文件(index.php除外)放在一个新目录中,并将.htaccess文件与以下内容放在一起:
deny from all
Run Code Online (Sandbox Code Playgroud)
确保您没有在此目录中放置任何images/css/jscript资源,因为它们也将被阻止.