107 votes

Comment utiliser un chemin relatif avec AuthUserFile dans le htaccess?

J'ai un .htaccess qui utilise l'authentification de base. Il semble que le chemin d'accès à l' .un fichier htpasswd n'est pas par rapport au fichier htaccess, mais plutôt de la configuration du serveur.

Donc, même si j'ai l' .htaccess et .htpasswd fichiers dans le même répertoire, cela ne fonctionne pas:

AuthType Basic
AuthName "Private Login"
AuthUserFile .htpasswd
Require valid-user

Cependant, c'est si je change le AuthUserFile à utiliser le chemin absolu:

AuthType Basic
AuthName "Private Login"
AuthUserFile "/home/user/public_html/mydir/.htpasswd"
Require valid-user

Mais je préfère quelque chose de plus mobile que je l'utilise sur plusieurs sites dans différents domaines. J'ai cherché sur le web mais je n'ai pas eu de résolution. Est-il possible d'utiliser un chemin relatif ou des variables comme l' %{DOCUMENT_ROOT}?

54voto

cweiske Points 13722

Nous utilisons IfDefine avec un apache2 paramètre de ligne de commande:

.htaccess (convient à la fois pour le développement et les systèmes live):

<IfDefine !development>
  AuthType Basic
  AuthName "Say the secret word"
  AuthUserFile /var/www/hostname/.htpasswd
  Require valid-user
</IfDefine>

Le développement de configuration du serveur (Debian)

Ajouter la ligne suivante à l' /etc/apache2/envvars:

export APACHE_ARGUMENTS=-Ddevelopment

Redémarrez votre serveur apache par la suite et vous aurez une invite de mot de passe uniquement lorsque vous n'êtes pas sur le serveur de développement.

Vous pouvez bien sûr en ajouter un autre IfDefine pour le serveur de développement, il suffit de copier le bloquer et de supprimer l' !.

12voto

Hanno Fietz Points 8685

1) Notez qu'il est considéré comme précaire et ont l' .htpasswd le fichier ci-dessous à la racine du serveur.

2) Les docs disent cela à propos des chemins relatifs, de sorte qu'il semble que vous êtes hors de la chance:

File-path est le chemin d'accès vers le fichier de l'utilisateur. Si elle n'est pas absolue (c'est à dire, s'il ne commence pas par un slash), il est considéré comme relatif à la directive ServerRoot.

3), Tandis que les réponses de recommander l'utilisation de variables d'environnement de travail parfaitement bien, je préfère mettre un espace réservé dans l' .htaccess le fichier, ou ont des versions différentes dans ma base de code, et ont le processus de déploiement de l'ensemble de tous (j'. e. remplacer les espaces réservés ou renommer / déplacer le fichier approprié).

Sur des projets Java, j'utilise Maven pour faire ce type de travail, par exemple sur des projets PHP, j'aime en avoir un build.sh et / ou install.sh shell script qui modifie les fichiers déployés à leur environnement. Cette découple votre base de code à partir de la spécificité de son environnement cible (j'. e. ses variables d'environnement et les paramètres de configuration). En général, l'application doit s'adapter à l'environnement, si vous le faites dans l'autre sens, vous pourriez avoir des problèmes une fois que l'environnement a également pour répondre à différentes applications, ou pour totalement indépendante du système, les exigences spécifiques.

8voto

digitaldonkey Points 1736

vous pouvez mettre votre Auth paramètres dans un Environnement. Comme:

SetEnvIf HTTP_HOST testsite.local APPLICATION_ENV=development
<IfDefine !APPLICATION_ENV>
  Allow from all
  AuthType Basic
  AuthName "My Testseite - Login" 
  AuthUserFile /Users/tho/htdocs/wgh_staging/.htpasswd
  Require user username
</IfDefine>

L'Authentification fonctionne, mais je ne pouvais pas obtenir mon environnement en cours d'exécution.

5voto

muni Points 20

.htpasswd exige un chemin absolu de l'absolu de la racine de la serveur.

S'il vous plaît obtenir la pleine chemin d'accès absolu du fichier à echo echo $_SERVER['DOCUMENT_ROOT'];.

voici de travail basic auth .htaccess script.

AuthType Basic
AuthName "Access to the Hidden Files"
AuthUserFile 'C:/xampp/htdocs/ht/.htpasswd'
Require valid-user

Avant la connexion

enter image description here

Afetr De Connexion

enter image description here

4voto

Arvo Bowen Points 394

Si vous essayez d'utiliser XAMPP avec Windows et que vous voulez utiliser un .fichier htaccess sur un serveur en ligne et de développer sur un XAMPP machine de développement suivant fonctionne très bien!


1) Après une nouvelle installation de XAMPP assurez-vous que Apache est installé comme un service.

  • Ceci est fait par l'ouverture du Panneau de Contrôle de XAMPP et en cliquant sur le petit "X" rouge pour le gauche du module Apache.
  • Il va ensuite vous demander si vous souhaitez installer Apache en tant que service.
  • Ensuite, il devrait se tourner vers une coche verte.

2) Lors de la configuration d'Apache est installé comme un service ajouter une nouvelle variable d'environnement comme un drapeau.

  • Tout d'abord arrêter le service Apache à partir du Panneau de Contrôle de XAMPP.
  • Ensuite ouvrez une invite de commande. (Vous savez la petite fenêtre noire le simule DOS)
  • Tapez "C:\Program Files (x86)\xampp\apache\bin\httpd.exe" -D "DEV" -k config.
  • Cela aura pour effet d'ajouter un nouveau DEV drapeau pour les variables d'environnement que vous pouvez utiliser plus tard.

3) Le Démarrage D'Apache

  • Dos ouvert le Panneau de Contrôle de XAMPP et démarrer le service Apache.

4) Créez votre .fichier htaccess avec les informations suivantes...

<IfDefine DEV>
  AuthType Basic
  AuthName "Authorized access only!"
  AuthUserFile "/sandbox/web/scripts/.htpasswd"
  require valid-user
</IfDefine>

<IfDefine !DEV>
  AuthType Basic
  AuthName "Authorized access only!"
  AuthUserFile "/home/arvo/public_html/scripts/.htpasswd"
  require valid-user
</IfDefine>

Pour expliquer le script ci-dessus, voici quelques notes...

  • Mon AuthUserFile est basé sur ma configuration et de vos préférences personnelles.
  • J'ai un test local, boîte de dev qui a ma page web situé à c:\sandbox\web\. À l'intérieur de ce dossier, j'ai un dossier appelé scripts qui contient le fichier de mot de passe .htpasswd.
  • La première entrée IfDefine DEV est utilisé pour cette instance. Si DEV est définie (ce qui est ce que nous avons fait ci-dessus, uniquement sur le dev de la machine de grossier), puis il va utiliser cette entrée.
  • Et à son tour, si vous utilisez le serveur live IfDefine !DEV sera utilisé.

5) Créez votre fichier de mot de passe (dans ce cas appelé .htpasswd) avec les informations suivantes...

utilisateur:$apr1$EPuSBcwO$/KtqDUttQMNUa5lGXSOzk.

Quelques petites choses à noter...

  • Votre fichier de mot de passe peut être n'importe quel nom que vous voulez.
  • Vous devez utiliser .htpasswd pour la sécurité.
  • Un grand générateur de mot de passe trouvé @ http://www.htaccesstools.com/htpasswd-generator/
  • Une bonne explication et la raison pourquoi vous devriez utiliser ce nom pour votre fichier est situé @ http://www.htaccesstools.com/articles/htpasswd/
  • ASSUREZ-VOUS DE METTRE LE MOT DE PASSE DE FICHIER DANS L'EMPLACEMENT CORRECT!!! (Voir l'étape 4 AuthUserFile zone)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X