Apache2: redirigir un subdominio a otra URL

15

Tengo dos subdominios, a.website.com y b.website.com, que apuntan a la misma dirección IP. Quiero redirigir b.website.com a a.website.com:8080. Tengo esto en mi archivo .htaccess ...

RewriteEngine on
RewriteCond {HTTP_HOST} b\.website\.com
RewriteRule ^(.*)$ http://b.website.com:8080$1 [L]

...Pero no funciona.

¿Hay alguna manera de hacerlo funcionar?

Technius
fuente
Intente agregar lo siguiente .htaccessen el directorio principal sobre el directorio de interés: RedirectMatch ^/foo/$ /foo/bar/o RedirectMatch ^/foo/$ /bar/baz/. Consulte también Cómo obtener apache2 para redirigir a un subdirectorio .
jww

Respuestas:

20

Siempre puedes usar un VirtualHost simple:

<VirtualHost *:80>
  ServerName b.website.com
  RedirectPermanent / http://a.website.com:8080/
</VirtualHost>

Si prefiere ir con el archivo .htaccess, solo le falta un signo% en la condición de reescritura:

RewriteEngine on
RewriteCond %{HTTP_HOST} b.website.com
RewriteRule ^(.*)$ http://a.website.com:8080$1 [L]
mattw
fuente
Probé los dos y no funcionaron. Tengo habilitado mod_rewrite y tengo VirtualHost en un archivo de sitio separado. ¿Hay algo que me falta?
Technius
3
Esto funciona bien Tuve un problema de redirección de bucle, porque estaba apuntando un subdominio a una subcarpeta, y esa subcarpeta estaba redirigiendo. Ahora, redirijo el subdominio a la URL que corresponde a la carpeta, ¡y la segunda redirección ocurre perfectamente!
Paschalis
¿Cómo hacer ot para preservar http://o https://, de cualquier manera, b.website.comse accedió en primer lugar?
Golar Ramblar
0

Complementando la respuesta principal

Tipo de redireccionamiento

Puede especificar explícitamente el tipo de redireccionamiento que pretende.
Le sugiero que use una redirección temporal (302) mientras prueba la regla de redirección.

# In a VirtualHost file
...
Redirect [301|302] /old_location http://new_domain/newlocation


# In a .httaccess file
...
RewriteRule ^(.*)$ http://new_domain/$1 [R=302,L]

Especificar patrones de coincidencia de directorios

Solo puede redirigir solicitudes que coincidan con algún patrón.

# In a VirtualHost file
...
RedirectMatch [301|302] ^/public/(.*)$ http://public.example.com/$1


# In a .httaccess file
...
RewriteRule ^/public/(.*)$ http://public.example.com/$1 [R=302,L]
ePi272314
fuente