Rediriger un domaine ou sous-domaine en ASP

Voici un script VBScript (ASP Classic) simple et SEO-friendly pour rediriger un domaine ou sous-domaine vers un autre.

Dans quels cas rediriger les visites?

Il arrive parfois, pour des questions de configuration DNS et serveur, qu’un site soit accessible avec plusieurs noms de domaines ou sous-domaines différents. Dans ces cas, il faudra rediriger toutes les visites des «mauvais» domaines vers le domaine de référence. En particulier:

  • Un site devrait toujours être accessible par une adresse de type http://www.example.com et une adresse de type http://example.com. Une de ces deux adresses sera votre adresse de référence, mais il faudra prévoir l’autre cas de figure… et rediriger les visiteurs qui arrivent sur la «mauvaise» adresse.
  • Il arrive parfois qu’un site soit accessible via un sous-domaine «technique», par exemple example.serveur1.monagenceweb.com. Ces adresses ne devraient pas être communiquées au public, mais il arrive qu’elles le soient ou qu’elles soient indexées par les moteurs de recherche, plus ou moins par accident.

Redirections HTTP 301 en ASP

Dans l’idéal, les redirections de domaines et sous-domaines devraient être gérées dans la configuration du serveur (site ou Virtual Host). Mais ce n’est pas toujours possible, et on a parfois besoin de gérer les redirections dans le code même du site, que ce soit en PHP, VBScript ou autre langage de script.

Voici une solution en VBScript:

<%
' ---------------------------------------------------
' Redirige les visites depuis de "mauvais" domaines
' Pour sans-www -> www, les domaines de test, etc.
' ---------------------------------------------------

' Changer ces valeurs pour chaque site web!
Dim canonicalDomain, redirectFrom(1)
canonicalDomain = "www.example.com"
redirectFrom(0) = "example.com"
redirectFrom(1) = "examplewebsite.live.ourcompany.com"

' Ne pas modifier le reste du script
Dim requestDomain, requestUrl, canonicalUrl
requestDomain = Request.ServerVariables("HTTP_HOST")
requestPath = Request.ServerVariables("SCRIPT_NAME")
canonicalUrl = "http://" & canonicalDomain & requestPath

For Each domain In redirectFrom
  If domain = requestDomain Then
    Response.Status = "301 Moved Permanently"
    Response.AddHeader "Location", canonicalUrl
    Response.End
  End If
Next
%>

On n’utilise pas la méthode ASP Response.Redirect, car cette dernière renvoie un code HTTP 302 (redirection temporaire) et pas 301 (permanente).

Comment utiliser ce script?

  1. Enregistrez-le séparément, par exemple en l’appelant redirect.asp et en le plaçant à la racine du site.
  2. Dans ce fichier, modifiez les valeurs de canonicalDomain (le domaine à utiliser comme destination en cas de redirection) et de redirectFrom (les domaines à rediriger).
    Attention, redirectFrom est un tableau, et il faut toujours le dimensionner correctement. (Quelques précisions sur les tableaux en VBScript.)
  3. Au tout début de chaque page ASP de votre site, appelez ce fichier:
    <!-- #include virtual="/redirect.asp" -->
    (Si toutes vos pages ASP incluent déjà un même script, par exemple un fichier d’en-tête ou contenant des fonctions utilitaires communes, vous pouvez aussi faire l’include de redirect.asp depuis ce script. L’essentiel, c’est qu’aucun autre code ASP exécuté plus tôt ne vienne ajouter ou modifier les en-têtes HTTP.)

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *