如何密码保护index.php和/,但允许访问所有其他文件和子目录。

时间:2017-10-16 16:49:35

标签: php .htaccess

我的问题与此非常相似: getting "authentication required" when requesting / instead of /index.php

但是,在上面的问题中,目标是只允许访问根URL或index.php并密码保护对所有其他文件和子目录的访问。

给出了一个很好的答案:

SetEnvIf Request_URI "^/$" allow=yes
SetEnvIf Request_URI "^/index.php$" allow=yes

AuthType Basic
AuthName "Password Required"
AuthUserFile /var/www/webinterface/.htpasswd
Options +FollowSymLinks
Order Deny,Allow
Satisfy any
Deny from All
Require valid-user
Allow from env=allow

我的问题恰恰相反:我只想密码保护目录的根URL或index.php文件,并允许免费访问目录中的所有其他文件。当我使用<FilesMatch "index.php">时,我成功保护了索引文件,但根URL允许访问。

对于那些比我更熟悉htaccess的人,我确定答案基本上是显而易见的。我如何只用密码保护index.php和根网址?谢谢。

2 个答案:

答案 0 :(得分:2)

像这样使用:

SetEnvIfNoCase Request_URI "^/(index\.php)?$" PROTECT

AuthType Basic
AuthName "Password Required"
AuthUserFile /var/www/webinterface/.htpasswd
Require valid-user
Satisfy any
Order Allow,Deny
Allow from All
Deny from env=PROTECT
  • 正则表达式模式^/(index\.php)?$将匹配//index.php,并设置env变量PROTECT
  • Allow from All允许所有URI
  • Deny from env=PROTECT拒绝env变量PROTECT

答案 1 :(得分:0)

不确定这是否是您真正想要的,但是像这样使用的选项import {NameOfModule} from "name of file B"; 呢?

-Indexes