Reescritura de Apache basada en subdominio [cerrado]


Estoy tratando de redirigir las solicitudes de un dominio comodín a un subdirectorio.
IE. something.blah.domain.com --> blah.domain.com/something

No sé cómo obtener el nombre del subdominio para usar en la regla de reescritura.

Solución final:

RewriteCond %{HTTP_HOST} !^blah\.domain\.com
RewriteCond %{HTTP_HOST} ^([^.]+)
RewriteRule ^(.*) /%1/$1 [L]

O como señaló pilif

RewriteCond %{HTTP_HOST} ^([^.]+)\.media\.xnet\.tk$
Author: Sam, 2008-09-08

3 answers

Debería echar un vistazo a la Guía de reescritura de URL de la documentación de apache.

Lo siguiente no está probado, pero debería ser el truco:

RewriteCond %{HTTP_HOST} ^([^.]+)\.blah\.domain\.com$
RewriteRule ^/(.*)$           http://blah.domain.com/%1/$1 [L,R] 

Esto solo funciona si el subdominio no contiene puntos. De lo contrario, tendría que alterar la expresión regular en RewriteCond para que coincida con cualquier carácter que aún debería funcionar debido al anclaje, pero esto ciertamente se siente más seguro.

 31
Author: pilif,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-26 16:53:30

Prueba esto:

RewriteCond %{HTTP_HOST} (.+)\.blah\.domain\.com
RewriteRule ^(.+)$ /%1/$1 [L]

@ pilif (ver comentario): Vale, eso es verdad. Acabo de copiar una .htaccess que utilizo en uno de mis proyectos. Supongo que tiene un enfoque ligeramente diferente:)

 3
Author: BlaM,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-08 12:37:23

@Sam

Su reescritura de segunda línea es incorrecta. La expansión de la variable se activa con%, no con $.

RewriteCond %{HTTP_HOST} ^([^\.]+)\.media\.xnet\.tk$
            ^

Eso debería hacer el truco

 1
Author: pilif,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-08 14:43:50