J'ai un serveur dédié avec Apache, sur lequel j'ai configuré des hôtes virtuels. J'en ai configuré un pour gérer le domaine www ainsi que le domaine non-www.
Mon fichier .conf VH pour le www:
<VirtualHost *>
DocumentRoot /var/www/site
ServerName www.example.com
<Directory "/var/www/site">
allow from all
</Directory>
</VirtualHost>
Avec ceci .htaccess
:
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]
Existe-t-il un moyen simple de rediriger le www vers la version non-www? Actuellement, j'envoie les deux versions à la même chose DocumentRoot
, .htaccess
mais je suis sûr que je dois pouvoir le faire dans le fichier VirtualHost.
apache-2.2
mod-rewrite
redirect
virtualhost
Chèvre mécontente
la source
la source
Réponses:
Il s'avère que les
mod_rewrite
règles sont correctes dans le fichier VirtualHosts, à l'exception de laRewriteBase
règle. J'ai fini avec ceci:EDIT: sur les conseils de joschi dans les commentaires, j'utilise maintenant cette version simplifiée en utilisant la
Redirect
directive demod_alias
:la source
:80
après,VirtualHost *
fait que tout est renvoyé "Interdit"!Soyez très prudent avec les redirections 301 car, par défaut, un navigateur qui reçoit la redirection 301 le stockera de manière permanente, ce qui signifie que vous abandonnerez le contrôle de ce qu'il verra lorsqu'il tentera d'accéder au domaine
www.example.com
.Voir par exemple cette discussion http://getluky.net/2010/12/14/301-redirects-cannot-be-undon/
Donc, soit assurez-vous qu'il ne soit pas mis en cache, soit utilisez mod_proxy (je recommande le mod_proxy).
Si vous pouvez laisser l'utilisateur voir le changement d'adresse URL dans la barre d'adresse du navigateur, utilisez mod_rewrite:
Si vous voulez que la "redirection" soit invisible pour l'utilisateur, utilisez mod_proxy:
Il convient de noter que mod_proxy, lorsqu'il est mal configuré, peut endommager votre réseau.
la source
Vous pouvez ajouter
ServerAlias example.com
à cela,VirtualHost
mais la performance sera différente d'une redirection.Modifier
Puisque vous voulez rediriger vos tâches et que vous n’avez pas besoin de fonctionnalités avancées, il semble que l’utilisation
Redirect
devrait vous suffire. Vous mettriez leRedirect
sous une directive VirtualHost.Une solution côté client consisterait à utiliser une
meta refresh
balise.la source
www.example.com
à l'example.com
aide de cette méthode?ServerName
etServerAlias
. L'un a example.com et l'autre www.example.com. Ensuite, les deux entrées DNS accéderont aux documents spécifiés dans le même vhost.Eh bien, vous pouvez créer un hôte virtuel pour SERVERNAME www.example.com et le rediriger vers un autre hôte virtuel avec le nom de serveur exemple.com.
la source