2011-04-05 9 views
5

Estoy tratando de escribir una regla para redirigir permenantly un nombre de dominio a otro nombre de dominioPermanente redirigir a través de reglas de reescritura de Apache

RewriteCond %{HTTP_HOST} ^www.companyname1.com$ 
RewriteRule ^(.*)$ http://www.companyname2.com/$1 [R=301,L] 

Esto sólo funciona si el usuario recuerda que escribir www, si el usuario no escribe en www en la url, la página se cargará pero los enlaces de la imagen se romperán.

¿Alguien sabe cómo ajustar la regla anterior para que funcione con y sin www?

Estoy usando una configuración LAMP, apache 2 en redhat.

Respuesta

9

Usted puede suministrar varios reescritura Condiciones opcionales con [OR]:

RewriteCond %{HTTP_HOST} ^www.companyname1.com$ [OR] 
RewriteCond %{HTTP_HOST} ^companyname1.com$ 
RewriteRule ^(.*)$ http://www.companyname2.com/$1 [R=301,L] 

Esto debería hacer el truco. Los primeros incendios de Condición de Reescritura, si www está presente, el segundo se dispara, si www ha sido olvidado.

+2

El nombre simbólico [R = permanente]" en lugar del numérico 301 es ligeramente más óptima, ya que evitar la confusión en su config. De http://httpd.apache.org/docs/2.0/mod/ mod_rewrite.html use: "RewriteRule^(. *) $ http://www.companyname2.com/$1 [R = permanent, L]" – Stickley

+1

Para mí, RewriteRule http://www.companyname2.com/$1 agregó un raya extra después del dominio, así que tuve que reemplazarlo por http: //www.companyname2.com$1 –

+0

@Stickley Wow. "un poco más óptimo". ¿Es consciente de que el "óptimo" es un superlativo? – arkascha

2

La redirección no funcionaba para mí y tuve que ajustarla, a continuación se muestra una versión funcional basada en la respuesta de @Demento.

# Parmenent redirect to webdesign.danols.com of all pages 
RewriteEngine on 
RewriteCond %{HTTP_HOST} ^www.kingston-web-design.com [OR] 
RewriteCond %{HTTP_HOST} ^kingston-web-design.com 
RewriteRule ^(.*)$ http://webdesign.danols.com.com$1 [R=301,L] 
1

Si no le importa lo que el nombre de host comienza con entonces no erradicar la expresión regular, simplemente compruebe que termina con companyname1.com.

En cuanto a la barra diagonal, simplemente agréguela como opcional a la raíz de su expresión regular.

RewriteCond %{HTTP_HOST} companyname1.com$ 
RewriteRule ^/?(.*) http://www.companyname2.com/$1 [R=permanent,L] 
Cuestiones relacionadas