2011-12-09 18 views
12

Estoy redireccionando un dominio a otro, pero quiero preservar la ruta en la redirección. Entonces, por ejemplo, quiero visitar www.example.com/services/education/page.html, pero mi redirección los llevará al www.new-example.com/services/education/page.html. ¿Qué debo escribir en mi archivo .htaccess para conservar la ruta "/services/education/page.html"?Cómo redireccionar un dominio completo mientras se preserva la ruta

Ahora mismo tengo:

redirect 301 http://www.example.com/ http://www.new-example.com/ 

pero no estoy seguro de si funciona o no (No se puede probar sin embargo, como estoy esperando detalles del dominio, etc.). Solo quiero estar seguro cuando coloque el sitio en vivo. ¿Es eso correcto o estoy fuera de la base?

Gracias!

+0

Todavía puede realizar la prueba antes de obtener los detalles de su dominio con un dominio existente, p. google.com o incluso inexistente, ya que todo lo que desea ver es que el redireccionamiento 301 se emite en todos los casos que lo desee mientras preserva su ruta. –

+1

Helicon tiene una aplicación RegexTest que le permite probar entradas de .htaccess. Incluso generará una regla para usted, en función de sus entradas/pruebas. – Aaron

Respuesta

22

Esto debe hacerlo:

RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_HOST} !new-example.com$ [NC] 
RewriteRule ^(.*)$ http://new-example.com/$1 [L,R=301] 
+0

Mi archivo .htaccess ya tiene el código (Wordpress) en él: RewriteEngine En RewriteBase/ RewriteRule^índice \ php $ - [L] RewriteCond% {} REQUEST_FILENAME -f RewriteCond % {REQUEST_FILENAME}! -d RewriteRule. /index.php [L] ¿Necesito esas 4 líneas de código que me diste? ¿O tendré un problema para poner RewriteEngine encendido dos veces (lo mismo para RewriteBase /) – jasonaburton

+0

omitir las dos primeras líneas si ya existen en su .htaccess –

+0

Estas redirecciones no funcionan. El único código que tengo en mi .htaccess está publicado en mi comentario anterior. ¿Hay alguna razón por la que no funciona? – jasonaburton

5

intento de añadir lo siguiente a su .htaccess en la raíz de su dominio example.com

RewriteEngine On 
RewriteBase/

#for all requests to www.example.com 
RewriteCond %{HTTP_HOST} ^www\.example\.com$ 
#redirect them to new-example 
RewriteRule (.*) http://www.new-example.com/$1 [R=301,L] 
4

su mando original utiliza el módulo de Apache mod_alias, y funcionaría, aunque es posible que desee actualizarlo a:

Redirect 301/http://www.new-example.com/ 

Eliminación de la exacta el dominio del dominio actual (anterior) significa que todos los dominios que apuntan a esa carpeta se enviarán al nuevo dominio, lo que hará que ese script de una línea sea más sólido.

Las otras respuestas utilizan el módulo Apache mod_rewrite. Si tienes eso también instalado, está bien usarlo, aunque son más de 4 líneas de código en comparación con uno. Además, mod_alias es parte del paquete "base", por lo que debe estar en todos los servidores Apache, mientras que mod_rewrite es una extensión opcional, por lo que algunos pueden no tenerlo.

+0

Funciona muy bien. Esta parece ser la mejor de las respuestas debido a que no depende de mod_rewrite. –

Cuestiones relacionadas