Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用密码保护index.php和/,但允许访问所有其他文件和子目录。_Php_.htaccess - Fatal编程技术网

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

如何使用密码保护index.php和/,但允许访问所有其他文件和子目录。,php,.htaccess,Php,.htaccess,我的问题与此非常相似: 但是,在上面的问题中,目标是只允许访问根URL或index.php,并通过密码保护对所有其他文件和子目录的访问 给出了一个极好的答案: SetEnvIf Request_URI "^/$" allow=yes SetEnvIf Request_URI "^/index.php$" allow=yes AuthType Basic AuthName "Password Required" AuthUserFile /var/www/webinterface/.htpas

我的问题与此非常相似:

但是,在上面的问题中,目标是只允许访问根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
我的问题正好相反:我只想用密码保护目录或index.php文件的根URL,并允许自由访问目录中的所有其他文件。当我使用
时,我成功地保护了索引文件,但根url允许访问


我相信,对于比我更熟悉htaccess的人来说,答案基本上是显而易见的。如何仅对index.php和根url进行密码保护?多谢各位

不确定这是否是您真正想要的,但是像这样使用的选项
-索引如何


选项-索引跟随符号链接
不允许超限

像这样使用它:

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
  • Regex模式
    ^/(index\.php)$
    将匹配
    /
    /index.php
    ,并设置环境变量
    保护
  • Allow from All
    允许所有URI
  • Deny from env=PROTECT
    拒绝环境变量
    PROTECT

我也喜欢答案和解释,但出于某种原因,当我使用您的代码时,根本没有密码保护。另一个奇怪的行为是,当我将index.php添加到URL时,它的行为不同——它删除index.php文件名,只显示根URL。我已经在Apache上测试了它,它可以正常工作。删除
index.php
似乎是重定向规则或代码之一的结果。您可以将.htaccess从一个新的浏览器中移出并使用此代码进行测试以进行验证。啊,谢谢您-我能够通过创建一个稍微更具体的正则表达式模式使其正常工作-我认为示例正则表达式在别处发生了重定向。非常感谢你的帮助!