Je me demandais s'il était possible de configurer une exigence d'authentification de base HTTP conditionnelle basée sur l'URL d'hôte virtuelle dans un fichier .htaccess. p>
Par exemple, ce que je veux faire, c'est avoir mysite.com et test.mysite.com Exécutez la même base de code dans le même répertoire mais mot de passe Protect Test.mysite.com. Il serait configuré de cette façon afin que je n'aurais pas besoin de brancher mon code puisque mon code d'application puisse voir quel Vhost / URL est servi et choisissez la base de données pour servir le contenu de. P>
3 Réponses :
Vous pouvez trier de KLUDGE Ceci en utilisant puis dans le répertoire code> code> bloc (ou juste en mode ouvert), vous avez la configuration de votre authentification , quelque chose comme ceci: p> maintenant pour la requête / satisfaire des trucs: p> Ceci va le faire pour tout hôte Cela ne correspond pas à mod_setenvif code> avec les modules
mod_auth code>. Utilisez la directive
setenvifnocase code> pour définir quel hôte est protégé par un mot de passe. Vous aurez besoin de quelques directives supplémentaires pour satisfaire l'accès:
^ test \ .mysite \ .com \. (: 80)? $ code> aura accès sans besoin d'auth (
autorisera env =! protégé_host code> ) Mais sinon, nous avons besoin d'un utilisateur valide (
nécessite un utilisateur valide code>). Le
satisfaire tout code> garantit que nous avons juste besoin d'un des 2, que ce soit, soit l'autorisation ou le besoin. P> p>
J'essaie d'avoir un cas conditionnel activé, mais utilisez
@ DM8 Ce n'est pas ce que
Hmm, puis à part attendre que mon hôte soit mis à niveau vers Apache 2.4 (qui a le block
@ DM8 Néanmoins que je sache, jusqu'à la création d'un bloc qui est appliqué à une variable d'environnement
Voici une solution similaire à ce que Jon Lin proposé, mais en utilisant rewriteCond code> pour vérifier le nom d'hôte:
J'ai eu des problèmes d'implémentation de la solution de Jon:
Bien que je connaisse assez bien avec Apache Conf et expressions régulières, l'authentification a toujours été tirée. À partir d'une analyse rapide, il semblait que le Mais j'ai trouvé une autre solution qui me semble plus sûre pour moi: P> i créé deux hôtes virtuels pour les deux domaines pointant vers la même racine de documents (qui est entièrement autorisé par la voie). Dans l'un des vhosts, j'ai ajouté les directives pour l'authentification de base (directement dans le bloc de directive Vhost). P> fonctionne comme un charme. Et j'ai un meilleur sentiment que cela est vraiment sûr - aucun risque de négliger des détails dans le modèle de regex qui ouvrirait les portes pour les intrus. P> autorisez de env =! Protégé_host code> la ligne n'a pas lancé.
C'est le moyen droit b> de le faire. Si vous avez besoin de 2 Vhosts à configurer différemment, vous configurez 2 Vhosts. La solution hacky avec l'env VaR et satisfaire tout code> ne doit vraiment être appliquée que si votre hébergement ne vous donne pas accès à Vhost / Server Config et que vous restiez à une solution .htaccess.