Php 密码保护Web目录和文件

Php 密码保护Web目录和文件,php,html,.htaccess,authentication,.htpasswd,Php,Html,.htaccess,Authentication,.htpasswd,用户进入我的网站并到达主页,他/她应始终且仅出现在主页上。所有其他文件都是由主页运行的脚本,但用户不应导航到它们。下面是我的目录布局: 他们将到达Front.php,并且应该始终保持在最前面。因此,我创建了一个htaccess文件,其中包含以下代码: DirectoryIndex Front.php index.html AuthType Basic AuthName "Login" AuthUserFile /disks/*/*/*/.htpasswd Require valid-user

用户进入我的网站并到达主页,他/她应始终且仅出现在主页上。所有其他文件都是由主页运行的脚本,但用户不应导航到它们。下面是我的目录布局:

他们将到达Front.php,并且应该始终保持在最前面。因此,我创建了一个htaccess文件,其中包含以下代码:

DirectoryIndex Front.php index.html
AuthType Basic
AuthName "Login"
AuthUserFile /disks/*/*/*/.htpasswd
Require valid-user
现在,所有内容都需要身份验证。但是我希望除了Front.php之外的所有东西都需要身份验证。如何从身份验证中排除Front.php

此外,此身份验证是否会阻止脚本运行,还是只是阻止用户通过url导航到文件?

使用此规则集:

<Filesmatch "^((?!Front\.php).)*$">
AuthType Basic
AuthName "Login"
AuthUserFile /disks/*/*/*/.htpasswd
Require valid-user
</Filesmatch>

<Files "Front.php">
allow from all
</Files>

AuthType Basic
AuthName“登录”
AuthUserFile/disks/*/*/*.htpasswd
需要有效用户
通融
使用此规则集:

<Filesmatch "^((?!Front\.php).)*$">
AuthType Basic
AuthName "Login"
AuthUserFile /disks/*/*/*/.htpasswd
Require valid-user
</Filesmatch>

<Files "Front.php">
allow from all
</Files>

AuthType Basic
AuthName“登录”
AuthUserFile/disks/*/*/*.htpasswd
需要有效用户
通融

您说您不想输入其他脚本,但添加了身份验证

如果您不想直接执行这些脚本,最好将它们移出public_html文件夹,这样就根本无法从外部访问它们。您仍然可以在front.php中包含/要求它们

管理脚本可以很容易地移动到一个子目录中,您可以从.htaccess添加身份验证。如果要向某些文件(而不是全部文件)添加身份验证,还可以选择从PHP脚本发送所需的头

您经常在文件开头看到这样的检查:

defined('MYAPPDEFINE') || die('No direct access allowed');
在条目页面(index.php、front.php等)中,可以添加以下行:

define('MYAPPDEFINE', 'Whatever value');

这样,每个被直接调用的文件都将立即终止,但当它从front.php中包含时,检查成功并包含该文件。

您说您不想输入其他脚本,但您向其添加了身份验证

如果您不想直接执行这些脚本,最好将它们移出public_html文件夹,这样就根本无法从外部访问它们。您仍然可以在front.php中包含/要求它们

管理脚本可以很容易地移动到一个子目录中,您可以从.htaccess添加身份验证。如果要向某些文件(而不是全部文件)添加身份验证,还可以选择从PHP脚本发送所需的头

您经常在文件开头看到这样的检查:

defined('MYAPPDEFINE') || die('No direct access allowed');
在条目页面(index.php、front.php等)中,可以添加以下行:

define('MYAPPDEFINE', 'Whatever value');
这样,每个被直接调用的文件都会死掉并立即终止,但是当它从front.php中被包含时,检查成功,文件被包含

现在,一切都需要身份验证。但是我希望除了Front.php之外的所有东西都需要身份验证。如何从身份验证中排除Front.php

尝试:

这将使用
满足
指令并将其设置为
任何
,这意味着
需要有效用户
允许
就足够了。变量
norequire\u auth
仅在URI为
/Front.php
时设置。如果需要,您可以通过包含额外的
SetEnvIfNoCase
指令来添加额外的白名单URI

此外,此身份验证是否会阻止脚本运行,还是只是阻止用户通过url导航到文件

如果通过
include
require
包含脚本,则不会阻止脚本运行。但是,如果您直接从
Front.php
的HTML内容链接到它们,就会弹出Front.php的登录对话框

现在,一切都需要身份验证。但是我希望除了Front.php之外的所有东西都需要身份验证。如何从身份验证中排除Front.php

尝试:

这将使用
满足
指令并将其设置为
任何
,这意味着
需要有效用户
允许
就足够了。变量
norequire\u auth
仅在URI为
/Front.php
时设置。如果需要,您可以通过包含额外的
SetEnvIfNoCase
指令来添加额外的白名单URI

此外,此身份验证是否会阻止脚本运行,还是只是阻止用户通过url导航到文件


如果通过
include
require
包含脚本,则不会阻止脚本运行。但是,如果您直接从
Front.php
的HTML内容链接到它们,就会弹出Front.php的登录对话框

使用此.htaccess内容防止人们请求front.php以外的任何内容:

RewriteEngine On

RewriteCond %{THE_REQUEST} !front.php [NC]
RewriteRule .* - [F,L]
现在,任何访问apache的人都只能使用fron.php


顺便说一句-据我所知,您可以强制Apache对特定目录中的任何内容进行身份验证,但不能对单个文件进行身份验证。

使用此.htaccess内容来防止人们请求front.php以外的任何内容:

RewriteEngine On

RewriteCond %{THE_REQUEST} !front.php [NC]
RewriteRule .* - [F,L]
现在,任何访问apache的人都只能使用fron.php


顺便说一句——据我所知,您可以强制Apache对特定目录中的任何内容进行身份验证,但不能对单个文件进行身份验证。

将其附加到现有的.htaccess文件中(放在底部)?尝试过它仍然希望身份验证访问前端。php@CharlieYabben:我已经更新了我的答案。您需要为Front.php以外的所有文件指定密码规则。检查我的最新答案。@CharlieYabben:奇怪,因为它对我有用。php在没有auth的情况下运行,对于其他每个文件,它都会要求我输入用户名/密码。我应该在这之前/之后添加什么内容吗?我在apache服务器上运行,因此需要启用任何设置吗?检查httpd.conf是否允许.htaccess覆盖。还有,你说现在所有的文件都有密码保护吗?把它附加到