htaccess ne fonctionne pas toujours mauvais mot de passe
Je suis en train de mot de passe protéger un répertoire, et avoir deux fichiers dans le répertoire qui devrait protégé par mot de passe il:
- .htaccess
- .htpasswd
HTACCESS:
###Contents of .htaccess:
AuthUserFile /var/www/html/path/to/my/directory/.htpasswd
AuthName "Protected Files"
AuthType Basic
Require user admin
HTPASSWD:
###Contents of .htpasswd
admin:oxRHPuqwKiANY
Le mot de passe est également admin, mais pas n'importe quel mot de passe j'ai essayer, c'est toujours mauvais. Il demande immédiatement de nouveau le mot de passe!
Quel est le problème avec cette configuration?
- Sont .htpasswd/.htaccess bloqué par la config? Tous dot fichiers sont bloqués par défaut sur un serveur apache.
- Comment puis-je la trouver? Le dialogue avec les données de connexion est popping up. Donc, je pense .htaccess devrait fonctionner. Ne sais pas si c'est valable pour tout .htpasswd.
- vérifiez votre
httpd.conf
fichier. - La meilleure façon de le vérifier est de vérifier si vous pouvez le voir si vous retirez de l'authentification.
- La valeur par défaut de la règle de blocage ressemble à ceci: <Files ~ "^\.ht"> Order allow,deny Deny from all Satisfaire à tous </Files>
- Je pense que cette seule réponse de mon fournisseur.
- Que voulez-vous dire avec la suppression de l'authentification? La suppression de .htpasswd et .htaccess?
- btw, comme @CaptainGiraffe souligné, htpasswd et htaccess sont par défaut refuser l'accès. même si vous protégez par mot de passe, vous aurez besoin de le spécifier dans httpd.conf
- Non, vous voulez ajouter de la protection par mot de passe .htaccess et .htpasswd droit? Ne supprimez pas les fichiers, mais supprimer l'authentification pour ces fichiers. Je soupçonne que vous trouverez qu'ils sont masqués par défaut.
- En fait, je veux le mot de passe de protection pour l'ensemble du répertoire, y compris les fichiers. J'ai encore de la difficulté avec la suppression de l'authentification. Comment dois-je faire? Commentant
AuthUserFile
etAuthType
? J'ai une autre.htaccess
sur cet espace web contenantErrorDocument 404 /error_404.html
qui fonctionne comme prévu. - Comment est-ce une question de programmation?
- Ok j'ai complètement mal compris la question, je pensais que tu voulais protéger par mot de passe votre .ht* les fichiers. Si c'est votre contenu réel du fichier de mot de passe le mot de passe ressemble étrangement court.
- Avez-vous créer cela .un fichier htpasswd à l'aide de la
htpasswd
commande? - C'est un valide le mot de passe crypté à l'aide de la crypte() la méthode.
$ openssl passwd -crypt -salt ox admin
donneoxRHPuqwKiANY
Vous devez vous connecter pour publier un commentaire.
Ce problème est presque toujours parce que apache ne peut pas lire le .un fichier htpasswd. Il y a quatre causes qui viennent à l'esprit:
ce n'est pas l'analyse correctement le chemin d'accès... comment avez-vous créé le .fichier htaccess? A-t-elle les fins de ligne unix (par rapport à-dire en utilisant le bloc-notes de Windows?
est le chemin d'accès correct? Que fait la commande suivante (avec le chemin d'accès de mise à jour) montrer?
ls -l /var/www/html/chemin/vers/mon/répertoire/.htpasswd
ne le serveur web ont accès au fichier? chmod 644 et voir si cela résout le problème.
il ne peut pas l'analyser .un fichier htpasswd: dans ce cas, vous utilisez le chiffrement crypt() de sorte qu'il semble que vous avez créé le fichier sur Linux et il est probablement très bien. Certains types de chiffrement ne fonctionne que sur certaines plates-formes, en cas de doute, essayez de passer en MD5.
Vous trouverez peut-être utile de messages dans le journal des erreurs d'Apache.
Mon argent est sur #3.
dirname(__FILE__)
et l'ajout de.htaccess
à la fin. 3. Les fichiers ont déjà 644. 4. Je pense que le chiffrement doit être fine, mais j'ai aussi testé à l'aide d'un cryptage MD5. Qui n'a pas travaillé, mais je pense qu'il devrait être aussi quelques modifications de serveur, que je n'ai pas pu faire parce que mon fournisseur pourrait le faire. En fin de compte, je pense que.htpasswd
sont bloqués par mon fournisseur et je ne peux lui demander si il débloque.J'ai eu un problème similaire en utilisant MAMP et c'était parce que j'étais en train de créer .htpasswd par la main. La Solution a été d'utiliser
htpasswd
de commande dans le terminal:cela a créé l' .un fichier htpasswd qui a bien fonctionné avec mon .fichier htaccess qui ressemblait donc:
ErrorDocument 401 "Authorisation Required"
de les empêcher d'aller dans une boucle sans fin si vous n'obtenez pas le mot de passe à droite. Voir mon rejeté edition pour un exempleIl ya une petite chance que vous voyez le mot de passe de protection d'un dossier parent, pas le dossier que vous attendez.
Si votre /etc/apache2/sites-enabled dossier n'a qu'un seul fichier, vérifier pour voir si il a une section pour vos sites dossier de, quelque chose comme:
sinon, si il a un fichier pour le nom de votre site, comme:
/etc/apache/sites-enabled/YOUR_SITE_NAME_HERE.conf
de modifier ce fichier au lieu de cela, et assurez-vous qu'il y a un
là. C'est la part importante! Si vous voulez seulement de permettre au minimum, spécifiez:
à la place.
J'ai eu le même problème. S'est avéré que le problème a été de cette ligne:
Si vous spécifiez
admin
vous ne pouvez accéder à l'annuaire avecadmin
même si vous avez d'autres utilisateurs dans le.htpasswd
fichier.Si vous souhaitez spécifier les utilisateurs dans le
.htpasswd
fichier, vous pouvez modifier la ligne:Mon problème est que je n'ai pas donner un chemin absolu pour le AuthFile ligne.
J'ai eu le même problème.
CRYPT_STD_DES - DES Standard de hachage avec un salt de deux caractères de l'alphabet "./0-9A-Za-z".
exemple:
Onlione javascript encripter est également disponible.
Si elle ne fonctionne toujours pas, de prendre soin de ces:
echo $_SERVER['DOCUMENT_ROOT'];
chmod(".htpasswd",0644);
Aussi, assurez-vous que votre fichier de mot de passe est ANSI-codées.
J'ai passé environ 2 heures pour résoudre le même problème. Mais le problème était de nginx.
J'ai nginx en tant que front de du serveur web et il y avait une ligne pour la configuration de proxy:
proxy_set_header Autorisation "";
Il remplace l'Autorisation de terrain et apache ne recevez pas de login et mot de passe tapé dans l'.
J'ai juste commenté cette ligne et ça a fonctionné.