Pregunta

Mis clientes quieren utilizar redireccionamientos 301 para forzar el subdominio 'www' en sus sitios. Así 'example.com/something' resuelve 'www.example.com/somthing', etc.

Lo que estoy tratando de hacer es simplemente añadir esto a mi archivo de host virtual:

<VirtualHost *:80>
  ServerAdmin webmaster@localhost     
  ServerName  example.com
  ServerAlias www.*
  DocumentRoot /data/apps/example.com/current/public
  RailsBaseURI / 

  RewriteEngine On
  RewriteCond %{HTTP_HOST} ^example\.com
  RewriteRule ^ http://www.example.com%{REQUEST_URI} [L,R=301]
</VirtualHost>

También hemos asegurado de que la reescritura mod fue validar mediante:

sudo a2enmod rewrite
sudo /etc/init.d/apache2 force-reload

El resultado de mis esfuerzos actuales, básicamente, parece ser exitosa. Apache se reinicia y todo funciona como se esperaba, excepto el reescritura no está sucediendo. Por lo tanto 'www.example.com' y 'example.com' resolver. El navegador no es redireccionado a 'www.example.com' cuando debería. ¿Algunas ideas? He intentado volver a cargar la configuración y reiniciar apache varias veces, pero me parece que no puede obtener las reglas de reescritura de trabajo. ¿Estoy que fueron creados en el lugar equivocado, colocándolos aquí en el host virtual en lugar de un archivo .htaccess?

Cualquier consejo aquí sería útil. Estoy completamente desconcertado.

¿Fue útil?

Solución

Ponga esta por debajo de su entrada principal VirtualHost:

<VirtualHost *:80>
    ServerName example.com
    RedirectMatch permanent ^/(.*) http://www.example.com/$1
</VirtualHost>

VirtualHost principal debe tener una entrada y no hay alias o redirecciones ServerName www.example.com. Además, no se requiere mod_rewrite para esta redirección.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top