我为一个只有pipe理员才能访问的网站的某些区域configuration了基本的Apache身份validation。 大多数Web应用程序通过将其pipe理页面放在一个子目录中使得这个方便,所以我为这个目录configuration了authentication,例如“/ goodapp / admin”。 问题是有些应用程序依赖于查询string,例如。
/badapp/index.php?page=admin
有没有什么办法可以configurationApache需要validation这样的URL,基于查询string?
我在这方面做了一些研究,但我不认为Apache会让你匹配查询string的方式,这将允许你有条件地要求validation。 你可以匹配一个目录或文件,但不能在查询stringAFAIK中的项目(除非你正在做URL重写)。 这是有道理的,因为你可能不希望应用程序逻辑坐在web服务器configuration。
你可以做的是在任何具有pipe理function的脚本之前添加一个这样的检查:
$isLoggedIn = array_key_exists('PHP_AUTH_USER', $_SERVER); if (!$isLoggedIn && $isTryingToUseAdminFeature) { // redirect to login.php; this file has two properties: // 1) the apache conf requires authentication to access it // 2) it redirects the user back from whence they came }
第二次, PHP_AUTH_USER应该被设置,所以$isLoggedIn将是真实的。 然后在你的代码中,你可以有条件地显示/允许pipe理function。