J'ai un .htaccess qui utilise l'authentification de base. Il semble que le chemin d'accès au fichier .htpasswd ne soit pas relatif au fichier htaccess, mais plutôt à la configuration du serveur.
Donc, même si j'ai les fichiers .htaccess et .htpasswd dans le même répertoire, cela ne fonctionne pas:
AuthType Basic
AuthName "Private Login"
AuthUserFile .htpasswd
Require valid-user
Cependant, cela fonctionne si je change le AuthUserFile pour utiliser le chemin absolu:
AuthType Basic
AuthName "Private Login"
AuthUserFile "/home/user/public_html/mydir/.htpasswd"
Require valid-user
Mais je préférerais quelque chose de plus mobile car je l'utilise sur plusieurs sites dans différents domaines. J'ai cherché sur le Web mais je n'ai pas trouvé de résolution. Est-il possible d'utiliser un chemin relatif ou des variables comme %{DOCUMENT_ROOT}
?
/var/...
) - et la question se pose: "comment utiliser un chemin relatif"?Car juste au cas où les gens recherchent une solution pour cela:
la source
req('Host')
, le client ne peut-il pas tromper cette valeur?1) Notez qu'il n'est pas considéré comme sûr d'avoir le
.htpasswd
fichier sous la racine du serveur.2) La documentation dit ceci à propos des chemins relatifs, il semble donc que vous n'avez pas de chance:
3) Bien que les réponses recommandant l'utilisation de variables d'environnement fonctionnent parfaitement bien, je préférerais mettre un espace réservé dans le
.htaccess
fichier, ou avoir différentes versions dans ma base de code, et faire configurer le processus de déploiement (c'est-à-dire remplacer les espaces réservés ou renommer / déplacer le fichier approprié).Sur les projets Java, j'utilise Maven pour faire ce type de travail, par exemple sur des projets PHP, j'aime avoir un script shell build.sh et / ou install.sh qui ajuste les fichiers déployés à leur environnement. Cela dissocie votre base de code des spécificités de son environnement cible (c'est-à-dire ses variables d'environnement et ses paramètres de configuration). En général, l'application doit s'adapter à l'environnement, si vous le faites dans l'autre sens, vous risquez de rencontrer des problèmes une fois que l'environnement doit également répondre à différentes applications ou à des exigences spécifiques au système totalement indépendantes.
la source
vous pouvez mettre vos paramètres d'authentification dans un environnement. Comme:
L'Auth fonctionne, mais je n'ai pas pu vraiment faire fonctionner mon environnement.
la source
/Users/...
) - et la question se pose: "comment utiliser un chemin relatif"?.htpasswd nécessite un chemin absolu complet depuis la racine absolue du serveur.
Veuillez obtenir le chemin absolu complet du fichier par écho
echo $_SERVER['DOCUMENT_ROOT'];
.voici le script auth .htaccess de base de travail.
Avant la connexion
Connexion Afetr
la source
Si vous essayez d'utiliser XAMPP avec Windows et que vous souhaitez utiliser un fichier .htaccess sur un serveur en direct et également développer sur une machine de développement XAMPP, ce qui suit fonctionne très bien!
1) Après une nouvelle installation de XAMPP, assurez-vous qu'Apache est installé en tant que service.
2) Quand Apache est installé en tant que service, ajoutez une nouvelle variable d'environnement comme indicateur.
3) Démarrez Apache
4) Créez votre fichier .htaccess avec les informations suivantes ...
Pour expliquer le script ci-dessus, voici quelques notes ...
5) Créez votre fichier de mot de passe (dans ce cas nommé .htpasswd) avec les informations suivantes ...
Quelques points à noter ...
la source
/home...
) - et la question se pose: "comment utiliser un chemin relatif"?ou si vous développez sur localhost (uniquement pour apache 2.4+):
la source
Je sais que c'est une vieille question, mais j'ai juste cherché la même chose et il y en a probablement beaucoup d'autres à la recherche d'une solution rapide et mobile. Voici ce que j'ai finalement trouvé:
la source
/var...
) - et la question se pose: "comment utiliser un chemin relatif"?.htaccess
fichier. Si vous deviez utiliser un chemin relatif, il serait considéré comme relatif auServerRoot
.Prenons un exemple.
Votre application se trouve dans / var / www / myApp sur un serveur Linux
.htaccess : /var/www/myApp/.htaccess
htpasswdApp : / var / www / myApp / htpasswdApp . (Vous êtes libre d'utiliser n'importe quel nom pour .htpasswd fichier )
Pour utiliser le chemin relatif dans .htaccess :
Mais il recherchera le fichier dans server_root répertoire . Pas dans document_root .
Dans tous les cas, lorsque l'application se trouve à / var / www / myApp :
racine_document est - / var / www / myApp
racine_serveur est / etc / apache2 // (juste dans notre exemple, car nous utilisons le serveur linux )
Vous pouvez le redéfinir dans votre fichier de configuration apache ( /etc/apache2/apache2.conf ), mais je suppose que c'est une mauvaise idée.
Donc, pour utiliser le chemin de fichier relatif dans votre /var/www/myApp/.htaccess, vous devez définir le fichier du mot de passe dans votre racine_serveur .
Je préfère le faire en suivant la commande:
Vous êtes libre de copier ma commande, d'utiliser un lien en dur au lieu d'un symbole ou de copier un fichier sur votre racine_serveur .
la source