我有这种结构,其中' 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"。
答案 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]