2008-09-17 7 views
4

Pour diverses raisons, telles que les cookies, le référencement, et pour garder les choses simples, je voudrais faire apache rediriger automatiquement toutes les demandes pour http://www.foobar.com/anything à http://foobar.com/anything. Le mieux que je pourrais trouver est une monstruosité basée sur mod_rewrite, y a-t-il un moyen simple et facile de le dire "Rediriger toutes les requêtes pour le domaine ABC vers XYZ"? PS: J'ai trouvé this somewhat related question, mais c'est pour IIS et fait le contraire de ce que je veux. Aussi c'est encore complexe.Faire apache dépouiller automatiquement le www.?

Répondre

9

Il est aussi simple que:

<VirtualHost 10.0.0.1:80> 
     ServerName www.example.com 
     Redirect permanent/http://example.com/ 
</VirtualHost> 

Adapter les noms d'hôte et les adresses IP au besoin :)

+1

oui ... vous êtes le gagnant pour ne pas utiliser mod_rewrite :) – davr

-1
RewriteEngine On 
RewriteCond %{HTTP_HOST} ^www.domain.com$ [NC] 
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L] 

Cela devrait faire l'affaire.

+0

attention à^www.domain.com $: les points tout correspondent et doivent être protégés ainsi. Vois ma réponse. – millenomi

+0

C'est ce que j'utilise sur quelques sites Web sans faute. – UnkwnTech

+0

Oui, cela fonctionnera sans points non échappés car les points correspondent également au point. Il n'y a pas beaucoup de façons que cela se passe mal. Mais c'est juste mieux d'échapper aux points, parce que de cette façon vous dites ce que vous voulez dire. –

4

assez simple si vous utilisez mod_rewrite, comme nous tous;)

Cela fait partie du .htaccess de mon site Web en direct:

RewriteEngine on 

# Catches www.infinite-labs.net and redirects to the 
# same page on infinite-labs.net to normalize things. 

RewriteCond %{HTTP_HOST} ^www\.infinite-labs\.net$ 
RewriteRule ^(.*)$ http://infinite-labs.net/$1 [R=301,L] 
0

Puisque vous avez mentionné l'utilisation de mod_rewrite, je suggérerais une règle simple dans votre .htaccess - ne semble pas monstrueuse me :)

RewriteCond %{HTTP_HOST} ^www\.foobar\.com$ [NC] 
RewriteRule ^(.*)$ http://foobar.com/$1 [L,R=301] 
1

Utilisez un fichier .htaccess avec quelques règles mod_rewrite:

RewriteEngine On 
RewriteRule ^www.SERVERNAME(.*) http://SERVERNAME$1 [L,QSA] 

Je ne suis pas sûr que je suis la syntaxe droite avec le $1 là, mais c'est bien documenté. L envoie un en-tête location: au navigateur, et QSA signifie Query String Append.

7

plus simple et plus facile à copier d'un site à:

RewriteCond %{HTTP_HOST} ^www\.(.+)$ 
RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 
+0

Cette solution est BEAUCOUP meilleure que le reste ici. –

+0

Une chose importante à noter à propos de cette solution est qu'elle transmettra toujours à HTTP. Une meilleure solution pourrait être http://pastebin.com/TjD6iha2 –

Questions connexes