7 votes

Apache Virtual Host Config www vs non-www, Rewrite ou sServerAlias ?

Nous avons un httpd.conf central et nous incluons des confs pour différents hôtes virtuels. Jusqu'à aujourd'hui, nous n'avions pas vraiment besoin de domaines "www.subdomain.site.com", seulement "subdomain.site.com". Maintenant que nous en avons besoin, j'essaie de déterminer laquelle de ces deux approches est la meilleure :

[1]. Utiliser une réécriture :

    RewriteCond %{HTTP_HOST} ^www.subdomain.site.com
    RewriteRule ^(.*)$ http://subdomain.site.com$1 [R=301]

O

[2]. Utiliser ServerAlais :

    <VirtualHost 111.22.33.44:80>
    ServerName subdomain.site.com
    ServerAlias www.subdomain.site.com
    Include conf/subdomain.conf
    </VirtualHost>

J'imagine qu'il y a plus de traitement sur le Rewrite, mais je ne sais pas comment ServerAlias se comporterait dans ce mélange. Est-ce que l'un des deux obtient un meilleur référencement que l'autre ?

Toutes les idées sont les bienvenues !

Merci,

KM

5voto

mcqwerty Points 2106

J'imagine que la solution de réécriture permet d'obtenir un meilleur référencement (joli terme :-P) car on considère généralement qu'il est préférable d'avoir un domaine canonique vers lequel tout le monde est renvoyé pour un ensemble particulier de contenu. En d'autres termes, avoir deux domaines différents qui produisent les mêmes résultats à partir du serveur peut diviser le classement de votre site entre les deux domaines, réduisant ainsi la valeur de chacun d'entre eux. (Google vous permet de spécifier un domaine canonique à l'aide de ses outils pour webmasters, mais cela ne fonctionne que sur Google).

Je pense que vous pouvez en fait utiliser un Redirect ici, c'est-à-dire

<VirtualHost *:80>
    ServerName www.subdomain.site.com
    Redirect permanent / http://subdomain.site.com/
</VirtualHost

Cela demande moins de calculs que d'invoquer mod_rewrite.

2voto

Mark Points 734

Je ferais probablement les deux. Avec quelque chose comme :

<VirtualHost 111.22.33.44:80>
  ServerName subdomain.site.com

  #Using Wildcard: might as well handle any variation
  #such as ww.subdomain.site.com (remember to set this in DNS too)
  ServerAlias *.subdomain.site.com

  RewriteEngine On

  #Change all variations to the Canonical hostname for SEO.
  RewriteCond %{HTTP_HOST} !^subdomain.site.com [NC]
  RewriteRule ^/(.*)$ http://subdomain.site.com/$1 [R=301]
  Include conf/subdomain.conf 
</VirtualHost>

Note : la solution de David Zaslavsky ci-dessus fait plus ou moins la même chose, mais de cette façon vous n'avez pas besoin de faire une section VirtualHost séparée pour chaque sous-domaine.

1voto

Hiram Chirino Points 1855

Voici ce qui fonctionne pour moi :

<VirtualHost *:80>

ServerName www.domain.com
ServerAlias domain.com

# [ snip some unrelated stuff ]

# Redirect secondary hostnames to canonical hostname
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain.com$
RewriteRule (.*) http://www.domain.com$1 [R=301,L]

</VirtualHost>

L'avantage de cette méthode au lieu de RedirectMatch est qu'elle redirige domain.com/about-us vers www.domain.com/about-us au lieu de rediriger toutes les requêtes vers la page d'accueil. Elle utilise également une redirection 301, qui transfère le classement dans les moteurs de recherche de domain.com/about-us à www.domain.com/about-us.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X