.htaccess 服务器内部错误500

0kjbasz6  于 2023-01-26  发布在  其他
关注(0)|答案(6)|浏览(171)

我正在使用.htaccess阻止一个文件夹,我以前从未使用过它,但遇到了一些问题。
.htaccess(位于我想阻止的文件夹中):

AuthName "Username and password required"
AuthUserFile /.htpasswd 
Require valid-user
AuthType Basic

.htpasswd(位于根目录,密码在实际文件中加密):

tim:blah

我得到500内部服务器错误与此,我不能找出原因.

5m1hhzi4

5m1hhzi41#

最可能的问题是这一行:

AuthUserFile /.htpasswd

此行应提供密码文件的完整文件系统路径,例如

AuthUserFile /var/www/.htpasswd

要发现文件系统路径,可以创建一个PHP文档,其中包含
echo $_SERVER['DOCUMENT_ROOT'];

xxslljrj

xxslljrj2#

如果没有任何帮助,并且您正在使用PHP,您可以通过将以下内容放入index.php(顶部)来使其工作:

if (isset($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'])) {
    if ($_SERVER['PHP_AUTH_USER'] !== 'user' || 
        $_SERVER['PHP_AUTH_PW'] !== 'pass') {

        header('WWW-Authenticate: Basic realm="Protected area"');
        header('HTTP/1.0 401 Unauthorized');

        die('Login failed');
    }
}
kwvwclae

kwvwclae3#

权限也可能导致此问题。
确保.htpasswd可由Web服务器用户读取。
例如,如果使用nginx,请检查nginx.conf以找出服务器用户是谁,如果使用Apache,则可以找到this way,等等。
然后将权限所有者和读取权限设置为.htpasswd

bjp0bcyl

bjp0bcyl4#

如果你现在看到500 Internal Server error--这主要是因为在较新的Apache版本中,AuthUserFile中的路径必须放在quotation marks中。

AuthUserFile "/var/www/somewhere/.htpasswd"
l7mqbcuq

l7mqbcuq5#

我还要补充的是,在一些网络主机上,如果把.htpasswd文件放在一个公共可访问的区域,它将无法工作。我最近的一次安装证实了这一点。正如其他人所指出的,最好把它放在网站的根目录下。

uqxowvwt

uqxowvwt6#

有同样的问题,它与访问有关!您是否通过将密码文件的所有权授予www-data用户

chown www-data /var/www/.htpasswd
chmod 640 /var/www/.htpasswd

?出于显而易见的原因,最好将密码保存在/var/www/目录之外的某个地方,比如/home/MYSERVER/。在这种情况下,您还需要将此父目录的所有权授予用户www-data

相关问题