htaccess不保护从index.php中心访问的文件夹

时间:2015-02-20 15:04:14

标签: apache .htaccess directory .htpasswd

我有这种结构,其中' param'确定哪个文件夹必须访问:

的index.php?PARAM

./folder1/ (index.php + .htaccess)
./folder2/ (index.php + .htaccess)        
...

index.php执行:...require(key($_GET)."/index.php")...

每个文件夹都有一个.htaccess,需要通过不同的用户名进行身份验证。问题是,当我第一次对其中一个进行身份验证时,允许我在没有特定身份验证的情况下访问其他文件夹。为什么呢?

PD:我的动机是"要求(密钥($ _ GET)。" /index.php")"而不是简单地做" / folder1"。

1 个答案:

答案 0 :(得分:0)

如果您使用require,则PHP正在加载index.php文件,并且不会强制执行HTTP Auth(假设您的身份验证位于htaccess文件中)。您可以使用mod_rewrite路由请求,而不是使用require。所以在根目录的htaccess中:

RewriteEngine On
RewriteCond %{QUERY_STRING} !^$
RewriteCond %{DOCUMENT_ROOT}/%{QUERY_STRING}/index.php -f
RewriteRule ^index\.php$ /%{QUERY_STRING}/index.php [L]