Apache-Weiterleitung zur gleichen Subdomäne?

Apache-Weiterleitung zur gleichen Subdomäne?

Ich habe eine Anwendung, die auf dem Port 8080 auf Tomcat läuft. Und sie funktioniert einwandfrei mit dieser VirtualHost-Konfiguration:

<VirtualHost *:80>
     ServerAdmin [email protected]
     DocumentRoot /var/www/html
     ServerName www.subdomain.domain.com
    ServerAlias www.subdomain.domain.com *.subdomain.domain.com
     ErrorLog /var/log/apache2/subdomain.d/subdomain_er.log
     CustomLog /var/log/apache2/subdomain.d/subdomain_requests.log custom

     Redirect / https://subdomain.domain.es

</VirtualHost>

Jetzt habe ich einen neuen Server und eine neue Anwendung, die die „Subdomäne“ filtert und je nach Subdomänennamen unterschiedliche HTMLs und unterschiedliche Stylesheets lädt (Subdomänen werden von verschiedenen Unternehmen erstellt, die ihre eigenen Stile angeben).

Ist es möglich, den Subdomänennamen abzurufen und über https auf dieselbe Subdomäne umzuleiten? So etwas wie Servername *.domain.com und Umleitung auf die Subdomäne (*.domain.com)? In einer Variable speichern?

Ich habe das Makro durchgesehen, aber das Makro benötigt die Parameter, die ihm übergeben werden müssen. Ich weiß nicht, welche Parameter in die Anfrage eingegeben werden, es könnte Unternehmen1 sein, es könnte Unternehmen2 sein …

Antwort1

Du kannst den ... benutzenUmschreibenModul von Apache.

Stellen Sie zunächst mit dem folgenden Befehl sicher, dass es in Ubuntu aktiviert ist:

sudo a2enmod rewrite

Wenn Sie Ihrem virtuellen Host die folgende Konfiguration hinzufügen, domain.comwird jede Subdomäne von zu einer Subdomäne von umgeleitet domain.es.

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.+)\.domain\.com$
RewriteRule ^/(.*)$ https://%1.domain.es/$1 [R=301,L]

Erläuterung:

  1. RewriteCond %{HTTP_HOST} ^(.+)\.domain\.com$

    Diese Bedingung prüft, ob der Host dem Muster *.domain.com entspricht und speichert, was übereinstimmt (.+)(also die Subdomäne). Beispielsweise domain.comstimmt das Muster nicht überein, während die folgenden Muster übereinstimmen:

    • dan.domain.com
    • www.dan.domain.com
  2. RewriteRule ^/(.*)$ https://%1.domain.es/$1 [R=301,L]

    Diese Regel weist Apache an, zu einer Subdomäne von umzuleiten domain.es. %1enthält den Wert, der mit der vorherigen RewriteCondAnweisung übereinstimmt. $1enthält den Wert, der mit dieser Anweisung übereinstimmt, sodass Sie den Pfad so belassen können, wie er ist, und nicht zur Stammdomäne umleiten müssen.

Beispiele:

  • dan.domain.comwird weitergeleitet zuhttps://dan.domain.es
  • www.dan.domain.comwird weitergeleitet zuhttps://www.dan.domain.es
  • dan.domain.com/examplewird weitergeleitet zuhttps://dan.domain.es/example
  • www.dan.domain.com/examplewird weitergeleitet zuhttps://www.dan.domain.es/example

verwandte Informationen