fragen stichworte

Wie bekomme ich den Hostnamen in rewriterule?

Wir haben ein paar Subdomains eingerichtet, und ich möchte einige Apache-Konfigurationen vereinfachen - zumal diese Subdomains volatil sind. Wie auch immer, ich versuche eine Umschreibungsregel zu bekommen, die den Host einschließt.

Bisher habe ich:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(.*).net.au$
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%1.net.au$1 [R=302,L]

Dies basiert auf https://stackoverflow.com/questions/3634101/url-rewriting-for-different-protocols-in-htaccess und http://httpd.apache. org/docs/2.4/rewrite/vhosts.html

Allerdings wird das Muster in der ersten Bedingung nicht in die umgeschriebene Adresse geschrieben, und ich werde am Ende an .net.au/wo auch immer gesendet (lasse mich nicht mit dem https voran) - habe ich verpasst etwas?

Ausführen von Apache 2.4 auf Ubuntu 14.04

antworten

Der von Ladadadada vorgeschlagene einfache Fall funktioniert, wenn der Domänenname zwischen dem angeforderten Host und dem beabsichtigten Host identisch ist:

RewriteEngine On

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=302,L]

Eine weitere Schwierigkeit besteht jedoch darin, dass ich auch http://sub-domain.local auf http://sub-domain.net.au umleiten muss - die Verwendung von %{HTTP_HOST} wäre daher nicht ausreichend.

Ich habe mir einige Beispiele noch einmal angesehen und festgestellt, dass die Rückreferenz% 1 offenbar nur für RewriteCond gilt, direkt vor RewriteRule.

Ich habe die Dinge neu geordnet:

RewriteEngine On

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(.*)(.local|.net.au)$
RewriteRule ^(.*)$ https://%1.net.au$1 [R=302,L]

Und die Weiterleitungen funktionieren hervorragend.