2008-09-08 15 views
27

Im tratando de redirigir las solicitudes de un dominio comodín a un subdirectorio.
es decir. something.blah.domain.com ->blah.domain.com/somethingReescritura de Apache basada en el subdominio

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 ha señalado pilif

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

Respuesta

31

Usted debe echar un vistazo a la URL Rewriting Guide de la documentación de Apache.

El siguiente es no probado, pero debe al truco:

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

Esto sólo funciona si el subdominio no contiene puntos. De lo contrario, tendrías que modificar Regexp en RewriteCond para que coincida con cualquier personaje que todavía debería funcionar debido al anclaje, pero sin duda se siente más seguro.

+1

Gracias. Funciona de maravilla. – goo

+0

Nota "cuando NO utilizar Reescribir": http://httpd.apache.org/docs/2.2/rewrite/avoid.html#redirect – marcovtwout

3

Prueba esto:

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

@pilif (ver comentario): Bueno, eso es cierto. Acabo de copiar un .htaccess que uso en uno de mis proyectos. Supongo que tiene un enfoque ligeramente diferente :)

+0

su solución no redirecciona a blah.domain.com sino que simplemente vuelve a escribir en something.blah .dominio.com/algo, que no es como yo leí la pregunta original. – pilif

+0

Supongo que está bien si ambos son atendidos por el mismo VirtualHost. En particular, hacerlo de esta manera significa que el cliente no ve la redirección, todavía ven algo.blah.example.com. –

1

@ Sam

su línea RewriteCond está mal. La expansión de la variable se desencadena con%, no $.

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

que debe hacer el truco

+0

HA! el error tipográfico de un personaje golpea de nuevo :( – Sam

Cuestiones relacionadas