.htaccess / .htpasswd 500 Erreur de serveur interne

Je travaille sur le blocage d’un dossier avec .htaccess, que je n’ai jamais utilisé auparavant, et j’ai des problèmes. Voici ce que j’ai

.htaccess (situé dans le dossier que je veux bloquer):

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

.htpasswd (situé à la racine, le mot de passe est chiffré dans le fichier réel):

  tim:blah 

J’obtiens 500 erreurs de serveur interne avec cela et je n’arrive pas à comprendre pourquoi.

Le problème le plus probable est cette ligne:

 AuthUserFile /.htpasswd 

Cette ligne doit fournir un chemin complet vers le fichier de mot de passe, par exemple

 AuthUserFile /var/www/.htpasswd 

Pour découvrir votre chemin de système de fichiers, vous pouvez créer un document PHP contenant

echo $_SERVER['DOCUMENT_ROOT'];

Si rien ne vous aide et que vous utilisez PHP, vous pouvez le faire fonctionner en le mettant dans votre index.php (en haut):

 if (isset($_SERVER['PHP_AUTH_USER']) && isset($_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!'); } } 

Les permissions peuvent également causer ce problème.

Assurez-vous que .htpasswd est lisible par l’utilisateur du serveur Web.

Par exemple, si vous utilisez nginx, vérifiez le nginx.conf pour savoir ce que l’utilisateur du serveur est, si vous utilisez Apache, vous pouvez le trouver de cette façon , etc.

Ensuite, définissez les bons propriétaires et lisez les permissions sur .htpasswd

Je voudrais également append que certains sur certains hôtes Web, le fichier .htpasswd ne fonctionnera pas s’il est placé dans une zone accessible au public. Une installation récente je l’ai confirmé. Comme d’autres l’ont noté, il est préférable de le placer à la racine du site.