2017-07-06 3 views
1

Ich benutze Apache 2.4 als Reverse Proxy, und ich muss auf eine URL umleiten, nur wenn Anmeldeinformationen in URL übergeben werden. Zum Beispiel ist dies meine URL:Apache 2.4 Rewrite URL mit voller URL

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

ich diese Rewrite Bedingung verwenden:

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

Aber es nicht übereinstimmen, ich nehme an, weil HTTP_HOST keine Authentifizierungsdaten enthält. Da gibt es eine Möglichkeit, die URL auch mit Authentifizierungsdaten abzugleichen und dann kann ich so umleiten?

Vielen Dank Marco

Antwort

0

Wie Sie richtig sagen, das ist nicht Teil der Host-Header, so würde so nicht überein.

Sie können es mit der REMOTE_USER Variable tun. Wie Sie es tun, hängt vom Kontext Ihrer Regeln ab. Siehe the documentation und speziell das unten stehende Zitat.

%{LA-U:variable} können für Look-Ahead, die eine interne (URL-basiert) Unteranfrage auszuführen verwendet werden, um den Endwert von variable zu bestimmen. Dies kann verwendet werden, um auf die Variable zum Umschreiben zuzugreifen, die in der aktuellen Phase nicht verfügbar ist, aber in einer späteren Phase eingestellt wird.

Zum Beispiel neu zu schreiben nach den REMOTE_USER Variable aus innerhalb des pro-Server-Kontextes (httpd.conf Datei), die Sie verwenden müssen %{LA-U:REMOTE_USER} - diese Variable wird durch die Genehmigung Phasen gesetzt, die nach der URL Übersetzung kommen Phase (während der mod_rewrite arbeitet).

Auf der anderen Seite, weil mod_rewrite implementiert seinen pro-Verzeichnis Kontext (.htaccess Datei) über die Fixup Phase der API und weil die Berechtigungs Phasen vor dieser Phase kommen, kann man einfach %{REMOTE_USER} in diesem Zusammenhang verwenden.

So etwas wie dies in Ihrer httpd.conf Datei:

RewriteCond %{LA-U:REMOTE_USER} =user 

Oder in .htaccess:

RewriteCond %{REMOTE_USER} =user 
+0

Hallo, Vielen Dank für Antwort, aber es ist nicht mein Fall. Ich muss nur einmal neu schreiben, wenn die URL mit Benutzername und Passwort übergeben wird, und nicht wenn URL nur neu geschrieben wird. –