Apache AliasMatch mit mehreren Subdomains

Apache AliasMatch mit mehreren Subdomains

Ich habe folgende virtuelle Hosts:

<VirtualHost *:443>
  ServerName article.example.com
  AliasMatch "^/(.*)" "/var/www/html/article.php"
 </VirtualHost>
 <VirtualHost *:443>
  ServerName company.example.com
  AliasMatch "^/(.*)" "/var/www/html/company.php"
 </VirtualHost>

Ich möchte alles unter einem virtuellen Host zusammenfassen, und zwar so:

 <VirtualHost *:443>
  ServerName example.com
  ServerAlias *.example.*
  AliasMatch "^(article|company)\.example\.*/(.*)" "/var/www/html/$1.php"
 </VirtualHost>

Ist das möglich? Muss ich Mod Rewrite verwenden? Ich möchte bestimmte Subdomains verwandten Dateien auf meinem Server zuordnen, ohne die URL zu ändern. Ich möchte article.example.com/test-articlezuordnen zu article.php.

Antwort1

AliasMatch "^(article|company)\.example\.*/(.*)" "/var/www/html/$1.php"

Die AliasMatchDirektive gleicht den angefragten URL-Pfad ab (wie im ersten Beispiel), nicht denHostname(wie Sie es hier versuchen), also wird so etwas nicht übereinstimmen.

Die naheliegende Wahl wäre mod_rewrite, wie Sie vorschlagen. Zum Beispiel:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(article|company)\.
RewriteRule ^ /var/www/html/%1.php [L]

Wenn die %1Rückreferenz die Übereinstimmung mit dem erfassten Teilmuster im vorhergehenden enthältBedingungsmuster.

Wenn /var/www/htmldie Dokumentwurzel ist, kann dies ausgelassen werden inAuswechslungZeichenfolge, die in einen zum Dokumentstammsatz relativen URL-Pfad anstelle eines absoluten Dateipfads umgeschrieben wird, d. h. einfach /%1.php.

Sie könnten es allgemeiner gestalten und die Anfrage für jede Subdomäne neu schreiben, wenn diese Subdomäne als .phpDatei im Dokumentstamm vorhanden ist. Beispiel:

RewriteCond %{HTTP_HOST} ^([^.]+)\.example
RewriteCond %{DOCUMENT_ROOT}/%1.php -f
RewriteRule ^ /%1.php [L]

verwandte Informationen