¿Cómo redirigir root y solo root a través de htaccess?

53

Quiero redirigir solo mi raíz a otra url, pero mantener todos los directorios / sub / donde pertenecen (y redirigir)

ejemplo:

mysite.com/1 redirige a algún lugar mysite.com/admin abre una página

quiero mysite.com/ para redirigir a mysecondsite.com y solo esto con una redirección 301 usando htaccess


fuente

Respuestas:

75

Prueba esto:

RewriteEngine on
RewriteCond %{HTTP_HOST} mysite\.com [NC]
RewriteCond %{REQUEST_URI} ^/$
Rewriterule ^(.*)$ http://mysecondsite.com/ [L,R=301]

Si no necesita verificar el dominio anterior (por ejemplo, si el directorio donde se ubica su .htaccess solo lo usa el dominio anterior), puede eliminar la segunda línea.

Rodrigo Sieiro
fuente
1
En mi caso, necesitaba redirigir el tráfico a mysite.com/ pero no a foo.mysite.com, así que tuve que agregar una expresión regular a la línea 2: RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]para asegurarme de que la coincidencia era para el host exacto
jaygooby
Es más eficiente verificar la ruta URL en el RewriteRule patrón (como en la respuesta de @ DaveForgac), en lugar de usar una condición adicional para verificar la REQUEST_URIvariable del servidor.
MrWhite
38

Si quiere decir que solo desea redirigir "/" a otro dominio, esto funcionará:

RewriteEngine on
RewriteRule ^$ http://www.example.com/ [R=301,L]

Esto solo coincide con la raíz del dominio con nada después, por lo que solo redirigirá el nombre de dominio sin un nombre de archivo especificado.

Dave Forgac
fuente
Una ligera variación funcionó para mí. Agregado al final de mi htaccess, después de invocar todas las demás reglas, solo quería presentar una página de bienvenida a cualquiera que visite mi dominio raíz (sin ningún subdominio): RewriteCond% {HTTP_HOST}! ^ (Subdominio1 | subdominio2) \. Mysite \ .com $ [NC] RewriteRule ^ $ /welcome.php [NC, L]
MarsAndBack
15

Esto debería funcionar bien:

RedirectMatch 301 ^/$ https://example.com/
stefanbc
fuente
2
Esto sería preferible (a las respuestas existentes) si aún no está utilizando mod_rewrite para otros redireccionamientos.
MrWhite
-3

Una solución más corta:

Redirect 301 / http://mysecondsite.com/
minipark
fuente
12
Esto NO hará lo que quiere Jardel. Redirigirá TODAS las páginas en lugar de solo la raíz.
sharoz