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覆盖。还有,你说现在所有的文件都有密码保护吗?把它附加到