Apache AliasMatch con múltiples subdominios

Apache AliasMatch con múltiples subdominios

Tengo los siguientes hosts virtuales:

<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>

Me gustaría poner todo bajo un host virtual así:

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

es posible? ¿Tengo que usar mod reescritura? Quiero asignar ciertos subdominios a archivos relacionados en mi servidor sin cambiar la URL. Quiero article.example.com/test-articlemapear a article.php.

Respuesta1

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

La AliasMatchdirectiva coincide con la ruta URL solicitada (como lo está haciendo en el primer ejemplo), no con lanombre de host(como estás intentando hacer aquí), por lo que algo como esto no coincidirá.

La opción obvia sería mod_rewrite, como sugieres. Por ejemplo:

RewriteEngine On

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

Donde la %1referencia inversa contiene la coincidencia del subpatrón capturado en el anteriorPatrónCond.

Si /var/www/htmles la raíz del documento, entonces se puede omitir delsustitucióncadena, reescribiendo en una ruta URL relativa a la raíz del documento en lugar de una ruta de archivo absoluta. es decir. simplemente /%1.php.

Podría hacerlo más genérico y reescribir la solicitud para cualquier subdominio donde ese subdominio exista como un .phparchivo en la raíz del documento. Por ejemplo:

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

información relacionada