Tengo un servidor dedicado con Apache, en el que he configurado algunos VirtualHosts. He configurado uno para manejar el dominio www y el dominio no www.
Mi archivo VH .conf para www:
<VirtualHost *>
DocumentRoot /var/www/site
ServerName www.example.com
<Directory "/var/www/site">
allow from all
</Directory>
</VirtualHost>
Con esto .htaccess
:
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]
¿Hay una manera simple de redirigir el www a la versión no www? Actualmente estoy enviando ambas versiones a la misma DocumentRoot
y usando .htaccess
pero estoy seguro de que debo poder hacerlo en el archivo VirtualHost.
apache-2.2
mod-rewrite
redirect
virtualhost
Cabra descontento
fuente
fuente
Respuestas:
Resulta que las
mod_rewrite
reglas están bien en el archivo VirtualHosts, aparte de laRewriteBase
regla. Terminé con esto:EDITAR: siguiendo los consejos de joschi en los comentarios, ahora estoy usando esta versión simplificada usando la
Redirect
directiva demod_alias
:fuente
:80
después,VirtualHost *
hace que todo regrese "Prohibido"!Tenga mucho cuidado con los redireccionamientos 301 porque, de forma predeterminada, un navegador que recibe el redireccionamiento 301 lo almacenará permanentemente, lo que significa que cederá el control de lo que verá ese navegador cuando intente acceder al dominio
www.example.com
.Ver, por ejemplo, esta discusión http://getluky.net/2010/12/14/301-redirects-cannot-be-undon/
Por lo tanto, asegúrese de que no se almacena en caché o use mod_proxy (recomiendo mod_proxy).
Si está de acuerdo con dejar que el usuario vea el cambio de URL en la barra de direcciones del navegador, use mod_rewrite:
Si desea que la "redirección" sea invisible para el usuario, use mod_proxy:
Cabe señalar que mod_proxy, cuando está mal configurado, puede dañar su red.
fuente
Puede agregar
ServerAlias example.com
alVirtualHost
pero el rendimiento será diferente de una redirección.Editar
Como desea redirigir y no necesita una funcionalidad avanzada, parece que usarlo
Redirect
debería ser suficiente para usted. Pondría elRedirect
bajo una directiva VirtualHost.Una solución del lado del cliente sería usar una
meta refresh
etiqueta.fuente
www.example.com
aexample.com
usar este método?ServerName
yServerAlias
. Uno tiene example.com y el otro www.example.com. Luego, ambas entradas dns accederán a los documentos especificados en el mismo vhost.bueno, podría crear un host virtual para SERVERNAME www.example.com y redirigirlo a otro host virtual con el nombre de servidor example.com
fuente