Comment puis-je forcer le sous-domaine 'www' w / Apache2 + Rails + Phusion passager?
-
19-09-2019 - |
Question
Mes clients veulent utiliser redirections 301 pour forcer le sous-domaine « www » sur leurs sites. Donc, 'example.com/something' décide de 'www.example.com/somthing' etc.
Ce que je suis en train de faire est d'ajouter simplement à mon fichier vhost:
<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>
Je l'ai également fait en sorte que mod rewrite a été activé via:
sudo a2enmod rewrite
sudo /etc/init.d/apache2 force-reload
Le résultat de mes efforts actuels semble essentiellement pour réussir. Apache redémarre et tout fonctionne comme prévu à l'exception du rewrite ne se produit pas. Donc, à la fois « www.example.com » et détermination « example.com ». Le navigateur ne soit pas redirigé vers « www.example.com » quand il faut. Des idées? J'ai essayé de recharger la configuration et redémarrer apache à plusieurs reprises, mais je ne peux pas sembler obtenir les règles de réécriture de travail. Suis-je les mettre en place au mauvais endroit en les plaçant ici dans le vhost au lieu d'un fichier .htaccess?
Tout conseil serait ici utile. Je suis complètement dérouté.
La solution
Mettre cela en dessous de votre entrée principale VirtualHost:
<VirtualHost *:80>
ServerName example.com
RedirectMatch permanent ^/(.*) http://www.example.com/$1
</VirtualHost>
Vous VirtualHost principal devriez avoir une entrée ServerName www.example.com et aucun alias ou réoriente. En outre, mod_rewrite n'est pas nécessaire pour cette redirection.