2017-07-06 1 views
1

J'utilise Apache 2.4 comme proxy inverse, et je dois rediriger vers une URL, uniquement si les informations d'identification sont passées dans l'URL. Par exemple, voici mon URL:Apache 2.4 URL de réécriture correspondant à l'URL complète

https://user:[email protected]/site1.php?1

J'utilise cette Rewrite Condition:

RewriteCond %{HTTP_HOST} ^user:[email protected]\.marcolino7\.myds\.me$ 

Mais il ne correspond pas, je suppose, car HTTP_HOST ne contiennent pas de données d'authentification. Y at-il un moyen de faire correspondre l'URL avec les données d'authentification et ensuite je peux rediriger?

Merci beaucoup Marco

Répondre

0

Comme vous le dites bien, qui ne fait pas partie de l'en-tête d'hôte, donc ne correspondrait pas à ce genre.

Vous pouvez le faire en utilisant la variable REMOTE_USER. Comment vous le faites dépend du contexte de vos règles. Voir the documentation et plus précisément la citation ci-dessous.

%{LA-U:variable} peut être utilisé pour lecture qui effectuent une discontinues effectuées sous-requête interne (basée sur l'URL) pour déterminer la valeur finale de variables. Cela peut être utilisé pour accéder à la variable pour la réécriture qui est non disponible à l'étape actuelle, mais qui sera définie dans une phase ultérieure.

Par exemple, pour réécrire selon le vous devez utiliser %{LA-U:REMOTE_USER} variable à partir dans le contexte par serveur REMOTE_USER (fichier httpd.conf) - cette variable est définie par l'autorisation des phases qui viennent après la traduction d'URL phase (pendant laquelle mod_rewrite fonctionne).

D'autre part, parce que mod_rewrite implémente son répertoire par répertoire contexte (fichier .htaccess) via la phase Fixup de l'API et parce que les phases d'autorisation viennent avant cette phase, vous ne pouvez utiliser %{REMOTE_USER} dans ce contexte.

Quelque chose comme ceci dans votre fichier httpd.conf:

RewriteCond %{LA-U:REMOTE_USER} =user 

Ou dans .htaccess:

RewriteCond %{REMOTE_USER} =user 
+0

Salut, Merci pour la réponse, mais ce n'est pas mon cas. Je dois réécrire seulement une fois, quand l'URL est passée avec le nom d'utilisateur et le mot de passe, et pas quand l'URL est juste réécrite. –