13

我在服务器上有将近 20 页,但我只想要一个名为 abc.php 的文件,用户可以观看。我想如果用户强行打开其他文件,例如 //example.com/some.php .htaccess 显示 403 错误。

<Files ~ "^(?!(changepwd|login|register|remind|securitycode|registersuggest)\.php$).*(\.php)$">
AuthName "Reserved Area"
AuthType Basic
AuthUserFile path_to/.htpasswd
AuthGroupFile path_to/.htgroup
Order Deny,allow
Require group allowed_groups  
</Files>

这是我目前使用的方式,但我认为可以有更优雅的解决方案。

4

2 回答 2

31

.htaccess文件将只允许用户打开index.php. 尝试访问任何其他文件将导致 403 错误。

Order deny,allow
Deny from all

<Files "index.php">
    Allow from all
</Files>

如果您还想对某些文件使用身份验证,您可以简单地在我的示例末尾添加当前文件中的内容。

于 2013-10-27T20:40:36.760 回答
1

将您不希望用户访问的文件移动到不在 Web 服务器根目录中的目录是最安全的。

就像我网站的根目录是这样的:

/var/www/html/my_web_site/public/index.php

我可以将非公共文件放在另一个目录中,如下所示:

/var/www/html/my_web_site/config.php
/var/www/html/my_web_site/auth.php
/var/www/html/my_web_site/db.php

并将这样的文件包含在index.php

include("../config.php");
include("../auth.php");
include("../db.php");

这样一来,您就不必冒险意外删除或忘记复制.htaccess文件。

于 2013-10-27T11:24:52.213 回答