¿Cómo puedo forzar subdominio 'www' w / Apache 2 + + rieles Phusion de pasajeros?
-
19-09-2019 - |
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.
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.