www redireccionar peticiones htaccess dominio descargar con .htaccess

.htaccess - htaccess - redireccionar peticiones http a https



.htaccess redirecciona todas las páginas al nuevo dominio (15)

Aquí, este redirige todo después del nombre de dominio en la url a la misma copia exacta en la nueva URL del dominio:

RewriteEngine on RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=301,L]

www.example.net/somepage.html?var=foo redirige a www.newdomain.com/somepage.html?var=foo

¿Qué regla de redireccionamiento usaría para redirigir todas las páginas en olddomain.com y redirigirlas a newdomain.com ?

El sitio tiene una estructura totalmente diferente, por lo que quiero que todas las páginas bajo el antiguo dominio sean redirigidas a la nueva página de índice de dominio.

Pensé que esto sería (en el directorio base de olddomain.com):

RewriteEngine On RewriteRule ^(.*)$ http://newdomain.com/ [R=301]

Pero si olddomain.com/somepage a olddomain.com/somepage me redirigen a newdomain.com/somepage . Estoy esperando un redireccionamiento solo a newdomain.com sin el sufijo de la página.

¿Cómo guardo la última parte?


Desde el punto de vista de la usabilidad, sería mejor si también envía la ruta con la solicitud (es decir, qué tiene en este momento) y deja que su nuevo sitio se ocupe de ello:

Usted buscó "/ productos".

Lamentablemente, esta página se ha ido. ¿Le gustaría visitar "/ new_products" en su lugar?

(y mejor aún, haciendo esto automáticamente).

Obviamente, esto es una gran cantidad de codificación y heurística para un sitio web más grande, pero en mi opinión sería rentable en términos de satisfacción del usuario (cuando el marcador guardado cuidadosamente del producto de su sueño lo lleva a la página principal de newdomain.com, este es frustrante.)


Este es un error en las versiones anteriores de apache (y por lo tanto mod_rewrite) donde el prefijo de ruta se agregaba a la ruta reescrita si se cambiaba. Mira aquí

Creo que fue arreglado en apache2 V2.2.12, hay una bandera especial que necesitas usar que agregaré aquí cuando la encuentre, (creo que fue NP para No Path)

RewriteRule ^(.*)$ http://newdomain.com/ [??]


Hay varias formas de hacer esto y varias redirecciones, las he enumerado a continuación:

301 (Permanente) Redirección: apunte un sitio completo a una URL diferente de forma permanente. Este es el tipo más común de redirección y es útil en la mayoría de las situaciones. En este ejemplo, estamos redirigiendo al dominio "example.com":

# This allows you to redirect your entire website to any other domain Redirect 301 / http://example.com/

302 (Temporal) Redirigir: apunte un sitio completo a una URL temporal diferente. Esto es útil para fines de SEO cuando tiene una página de aterrizaje temporal y planea volver a su página de destino principal en una fecha posterior:

# This allows you to redirect your entire website to any other domain Redirect 302 / http://example.com/

Redirige index.html a una subcarpeta específica:

# This allows you to redirect index.html to a specific subfolder Redirect /index.html http://example.com/newdirectory/

Redirige un archivo antiguo a una nueva ruta de archivo:

# Redirect old file path to new file path Redirect /olddirectory/oldfile.html http://example.com/newdirectory/newfile.html

Redirigir a una página de índice específica:

# Provide Specific Index Page (Set the default handler) DirectoryIndex index.html


He utilizado para mi blog de Wordpress esto como .htaccess. Convierte http://www.blah.nl/asad , http://blah.nl/asad , http://www.blah.com/asad etc, a http://blah.com/asad Gracias a todos otras respuestas me di cuenta de esto.

<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} !.*YOURDOMAIN/.com$ [NC] RewriteRule ^(.*)$ http://YOURDOMAIN.com/$1 [R=301,L] RewriteRule ^index/.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule>


Intenté la respuesta de user968421 y la solución de OP, pero el navegador mostró un error de seguridad en una página de pago. No puedo decirte por qué exactamente.

Nuestro anfitrión (Site Ground) tampoco pudo resolverlo.

La solución final estaba cerca, pero un ligero ajuste a la respuesta del usuario968421 (nota al margen: a diferencia del OP, intentaba redireccionar a la página correspondiente, no solo a la página principal, así que mantuve la referencia posterior [el $1 después del dominio] Respuesta de user968421):

RewriteEngine on RewriteRule (.*) https://newdomain.com/$1 [R=301,L]

¿Tiene el truco de este generador de redirección htaccess recomendado por un artículo de Host Gator (tiempos desesperados, medidas desesperadas, amiright?).


Mi reputación no me permite comentar una respuesta, pero solo quería señalar que la respuesta mejor calificada tiene un error:

RewriteEngine on RewriteRule ^(.*)$ http://www.newdomain.com$1 [R=301,L]

debería tener una barra antes del $ 1, entonces

RewriteEngine on RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=301,L]


Mi solución como SymLinks no funcionaba en mi servidor, así que usé un If en mi PHP.

function curPageURL() { $pageURL = ''http''; if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";} $pageURL .= "://"; if ($_SERVER["SERVER_PORT"] != "80") { $pageURL .= $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] . $_SERVER["REQUEST_URI"]; } else { $pageURL .= $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"]; } return $pageURL; } $redirect = str_replace("www.", "", curPageURL()); $remove_http_root = str_replace(''http://'', '''', $redirect); $split_url_array = explode(''/'', $remove_http_root ); if($split_url_array[0] == "olddomain.com"){ header("Location: http://www.newdomain.com/$split_url_array[1]"); die(); }


Puede ser así:

Options +FollowSymLinks RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^OLDDOMAIN/.com$ [NC] RewriteRule ^(.*)$ http://NEWDOMAIN.com [R=301,L]


Si desea redireccionar de una ubicación a un subdominio, puede usar:

Redirect 301 /Old-Location/ http://subdomain.yourdomain.com


Si desea redirigir para completar un nuevo sitio diferente (dominio) sin parámetros o páginas, use esto:

RewriteEngine On RewriteRule / http://new-domain.com/$1? [R=301]


Si el nuevo dominio al que está redireccionando su antiguo sitio está en un host diferente, simplemente puede usar un Redirect

Redirect 301 / http://newdomain.com

Esto redirigirá todas las solicitudes de olddomain al newdomain .

Redirect directiva de Redirect no funcionará o puede causar un Redirect loop si su dominio nuevo y dominio antiguo están en el mismo host, en ese caso deberá usar mod-rewrite para redirigir en función del encabezado del host solicitado.

RewriteEngine on RewriteCond %{HTTP_HOST} ^(www/.)?olddomain/.com$ RewriteRule ^ http://newdomain.com%{REQUEST_URI} [NE,L,R]


Solo para aclarar, después de eliminar el redireccionamiento de hosting que estaba en el camino, mi solución original también funciona:

RewriteEngine On RewriteRule ^(.*)$ http://newdomain.com/ [R=301]


Use los redireccionamientos condicionales con Options -FollowSymLinks y AllowOverride -Options deshabilitados por el Hoster si también se deben AllowOverride -Options algunos archivos locales:

Muestra de .htaccess

# Redirect everything except index.html to http://foo <FilesMatch "(?<!index/.html)$"> Redirect 301 / http://foo/ </FilesMatch>

Este ejemplo servirá a index.html local y redirecciona a todo el resto del personal al nuevo dominio.


<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_HOST} ^olddomain.com$ [OR] RewriteCond %{HTTP_HOST} ^www.olddomain.com$ RewriteRule (.*)$ http://www.newdomain.com/$1 [R=301,L] </IfModule>

Esto funcionó para mí