Redirection PHP, JavaScript, serveur. Comment choisir ?

Olivier Duffez (admin)
Membre du personnel
[nouvelle page sur WRI]

Il existe plusieurs cas pour lesquels des redirections doivent être utilisées (renommage d'un fichier, changement d'adresse du site, lien...). Du point de vue du référencement, parmi toutes les méthodes de redirection, certaines sont plus recommandées que d'autres, comme nous l'expliquons dans l'article. Du point de vue de l'internaute, c'est en général plus simple car il suffit de trouver un moyen d'afficher la page redirigée : il ne sera pas sensible au type de redirection.

le tutoriel sur les redirections pour les débutants

PS: n'oubliez pas d'aller lire les actu sur la page d'accueil de WRI de temps en temps :wink:
 
Nouveau WRInaute
Voici le code pour l'ASP :

Code:
<%
response.status = "301 moved permanently"
response.addheader "location", "http://www.votre-site.com/"
response.end
%>
 
WRInaute passionné
Bonjour,

Utile et intéressant, comme toujours, Olivier !
Mais pour les malheureux qui quittent un hébergeur gratuit ou celui de leur FAI, qui n'ont donc pas droit à php, fichier .htaccess...
pas d'autre solution que la nouvelle adresse en dur sur la page alors :cry: en espèrant que les visiteurs qui aboutiront sur cette page cliqueront sur le lien !
Et je serai dans ce cas bientôt... quand je pense que j'ai quitté mon 1er hébergeur (avec la balise META Refresh :oops: ) il y a un peu plus de 2 ans et que j'ai encore de temps à autre cette adresse dans mes referrers !

Amicalement,
Monique
 
Nouveau WRInaute
Salut à tous,

J'ai réorganisé mon site (chez Free) en créant des sous-dossiers. Tout fonctionne impeccable, sauf que tous mes liens référencés sur Google sont brisés !

J'ai donc utilisé le sript donné par "cmetge" pour tester une de mes pages (sript seul dans la page vidée de son contenu), et surprise, le lien Google renvoie vers la page elle-même, sans tenir compte de l'adresse de redirection dans le site....

Pouvez vous m'expliquer d'où vient cette erreur ??

D'avance Merci.
 
Nouveau WRInaute
Je ne sais pas si Free supporte l'ASP, mais dans le cas contraire, qui pourrait m'indiquer le même type de script de redirection permanente qui fonctionne chez Free ?

Merci à tous...
 
Nouveau WRInaute
Je suis sans doute un peu novice, mais j'ai écrit le scipt PHP suivant dans mes pages :

header("Status: 301 Moved Permanently");
header("Location: http://www.example.com/unepage.htm");
exit();

et Google me renvoie toujours vers l'ancienne adresse de la page, mais cette fois avec le code du sript qui apparaît tel quel...

HELP !!!!

D'avance merci...
Nicolas.
 
Olivier Duffez (admin)
Membre du personnel
nperrier a dit:
Je suis sans doute un peu novice, mais j'ai écrit le scipt PHP suivant dans mes pages :

header("Status: 301 Moved Permanently");
header("Location: http://www.example.com/unepage.htm");
exit();

et Google me renvoie toujours vers l'ancienne adresse de la page, mais cette fois avec le code du sript qui apparaît tel quel...

HELP !!!!

D'avance merci...
Nicolas.
ta page qui fait la redirection est-elle en PHP ? extension .php ?
 
Nouveau WRInaute
N'oublie pas de metre les balises PHP : <? ?>

Code:
<?
header("Status: 301 Moved Permanently"); 
header("Location: http://www.example.com/unepage.htm"); 
exit();
?>
 
Nouveau WRInaute
Merci cmetge et Gerges, mais j'ai l'impression d'être un abruti...

J'ai entré dans ma page source le code suivant (je bosse avec Golive 6) :
Code:
<?php
header("Status: 301 Moved Permanently");
header("Location: http://www.example.com/nouvellepage.htm"); 
exit();
php?>

et le résultat dans Google est toujours le même : il me renvoie sur le lien de l'ancienne page référencée (sur laquelle figure le code ci-dessus, sans tenir compte de la redirection...

Je vais devenir fou ! où bien j'ai zappé qq chose....

Merci de votre aide...
Nicolas
 
Olivier Duffez (admin)
Membre du personnel
si tu n'utilises pas une page avec l'extension .php elle ne sera pas analysée en tant que script PHP, donc le code PHP ne sera pas interprété...
 
WRInaute passionné
Donc, on peut en tirer une bonne question: comment rediriger depuis une ancienne page HTML (et si possible en HTML)?
En faisant un lien vers la nouvelle? Seul, ce n'est pas transparent pour l'utilisateur: il doit cliquer.
Avec en plus une meta http-equiv="Refresh" alors? Mais les moteurs n'ont pas l'air d'apprécier. En plus, il y a (avait?) l'effet page satellite non voulu: la nouvelle page est connue des moteurs, mais sous son ancien nom, pas terrible quand le but est d'avoir des noms de fichiers plus présentables.
En framant la nouvelle, avec lien dans le noframes?
Une solution bis serait de faire un rewriting ancien.html -> ancien.php qui fait une redirection 301 vers nouveau.html . [Autant faire un .htaccess alors]. Mais ces dernieres solutions ne sont pas toujours possibles selon l'hebergement, parfois la seule chose admise dans le .htaccess c'est la page d'erreur 404...
 
WRInaute discret
Si je met çà

Code:
<script language="javascript">
<!--//
window.location.replace("http://www.example.com/index.html");
//-->
</script>
dans une pages mapage.html , elle serat pas référencées çà bien çà?
Mais le moteur passe bien dessus c juste qu'il lit pas le java...
 
WRInaute passionné
il lit pas le javaSCRIPT (remarque, le java non plus), vas pas tout mélanger non plus...
 
WRInaute discret
aucun pb

Je sais bien :wink:
J'ai pas précisé dsl.
:oops:
Je ré explique :
Il ne sert à rien de mettre une redirection JavaSCRIPT vers index.html dans un fichier mapage.html si son seul but est de référencer le index.html .. vu que le javaSCRIPT est pas lu pas GG .
C'est plus clair là. :lol:
 
WRInaute discret
Désolé de faire remonter ce topic, mais voilà la raison :eek:

Il y a quelques jours/semaines, quelqu'un a demandé comment faire une redirection en PHP, mais au bout de quelques secondes. Mais je retrouve plus le topic alors je poste ici, de toute facon ca pourra intéressé tout le monde et meme etre ajouté à l'article en question dans ce topic :

Code:
<?php header('refresh: 5;URL=https://www.google.com'); ?>

Après, comment Google traite cela, c'est à voire :D

Merci Xenon pour la réponse.
 
WRInaute discret
Bonjour à tous!
si j'ai bien compris :
- il ne faut pas utiliser le javascript ni les balises metarefersh car notre ami Ggle ne les aime pas
- mais plutôt le php ou un fichier .htaccess

jusque là, ça va. 8)

Mais comment fait un ex-radin (comme moi) qui était heberge chez tiscali et redirigé par ulimit mais maintenant avec un hébergement et un ndd payants?
- carr si on utilise le PHP, la page est redirigée vers le.com mais garde tjrs comme url un .fr.st...
- htaccess? tiscali connait pas :?

alors? comment il fait l'ex-radin?
merci :)
 
Nouveau WRInaute
Je relance le sujet.

Pour des raisons statistiques, je travaille de la facon suivant quand j'inscrit un site dans un annuaire.
Je donne l'URL suivante : http://www.example.com/?hxr=c
et sur la page index.php, après traitement de la variable hxr, je redirige vers la page index.php ainsi :
Code:
	header("Location: http://www.example.com/");
	exit();
Dans la pratique, je m'appercois que le site est très mal référencé sur Google.
Est-ce à cause de ce principe de redirection ou pas ?

Est-ce que dans mon cas, je dois mettre
Code:
header("Status: 301 Moved Permanently");
avant le header de redirection ?

Merci
 
WRInaute impliqué
Si je peux me permettre, la bonne façon de faire une redirection 301 en php4 et php5 et HTTP/1.1 est:
Code:
header('HTTP/1.1 301 Moved Permanently', true, 301);
header ("Location: $URL"); 
exit();

Le code
Code:
header("Status: 301 Moved Permanently");
est un viel héritage de php3 et HTTP/1.0 et renverra un code 302 dans 90% des cas.
 
Nouveau WRInaute
Merci!

OK, merci, je vais essayer.

Sinon, y a-t-il un moyen de ré-écrire l'url afin que la page d'accueil reste de type www.example.com, alors que la page affichée est www.example.com/phpnuke?
Bien entendu, il faudrait que cette ré-écriture soit acceptable par Google...

Merci encore de ton aide!
Antoine
 
WRInaute accro
Perso j'ai utilisé (sous xoops)
Code:
// mettez votre nouveau nom de site (ex: www.example.com) sans le http;//
$url="www.example.com";
$uri = $_SERVER['REQUEST_URI'];
  // si votre site est hébergé chez lycos ou un autre hébergeur semblable il se presente de cette maniere
  // ce qui fait qu'il va falloir en tronquer une partie.
  // ex:  http://membres.lycos.fr/le nom du site/index.php
  // pour se faire écrivez en dessou le nom du site avec le "/" à la fin.
$uri=ereg_replace("le nom du site/","",$uri);
$actuel = ("http://".$url.$uri);

echo "<script type='text/javascript'>location.href='$actuel';</script>";
et pour les url toutes simple:

Code:
// mettez votre nouveau nom de site (ex: www.example.com) sans le http;//
$url="www.example.com";
$uri = $_SERVER['REQUEST_URI'];
 
$actuel = ("http://".$url.$uri);

echo "<script type='text/javascript'>location.href='$actuel';</script>"; 

if ( !defined("XOOPS_HEADER_INCLUDED") ) {
	define("XOOPS_HEADER_INCLUDED",1);
Et bien sur le 301 en haut :-D
 
Nouveau WRInaute
...
J'ai un problème à soumettre à votre sagacité.

Avant toute chose j'ai cherché, ici et ailleurs, sans trouver de symptomes similaires.
J'ai au par avant posté sur le forum punbb.fr car mon site héberge un de ces forums.
Bref normalement c'est une vrai colle (enfin j'espère que non ;) ).

Il s'agit d'un comportement bizarre d'une redirection RedirectPermanent par htaccess.
J'ai des résultats étonnants ... et d'ailleurs problématiques. :?

Je précise ma situation:

Je possède un site http://www.monsite.com
J'ai un alias de nom de domaine www.monalias.fr qui renvoi vers un répertoire de mon site à l'adresse http://www.monsite.com/monalias/
C'est là que se trouve mon forum Punbb:
http://www.monsite.com/monalias/forum/index.php
Mais il est également là du coup:
http://www.monalias.fr/forum/index.php
Jusque là rien d'original.

Je veux que mon forum ait une seule adresse, celle de l'alias:
http://www.monalias.fr/forum/index.php
Et d'ailleurs, tout le dossier /monalias/ devrait pointer vers l'équivalent http://www.monalias.fr

D'autant plus que certains moteurs de recherche me l'ont déjà indexé sur les 2 adresses équivalentes (c'est malin ! ).
Enfin, tout ça n'est pas très original non plus, je pense.

C'est ensuite que ça devient bizarre.

J'ai fait un RedirectPermanent dans le fichier htaccess à la racine de monsite.com .
Code:
RedirectPermanent /monalias http://www.monalias.fr

J'ai d'abord cru que ça marchait car toutes les requêtes sur les répertoires et sous-répertoires renvoient bien sur les bons répertoires de mon alias.
Mais là ou ça cloche c'est quand je donne l'adresse d'une page (par exemple index.php ou viewforum.php?id=2). Là, il ignore totalement ma redirection, sans rien dire, et il affiche la page sur monsite.com.

Je n'y comprends rien.

Ca vous dit quelque chose ?


P.S.: je n'ai pas donné les vrais adresses car je ne suis pas sur que la charte le permette. Néanmoins je n'ai aucun intérêt à afficher ici l'adresse de mon site principal (pas l'alias, l'autre) que je ne tiens pas à faire référencer.
 
Nouveau WRInaute
redirection 301... après une 404 !?

Bonjour,
je voudrai relancer le sujet évoqué par Monique (il y a déjà longtemps ! :? ) :
Comment faire pour récupérer l'indexation et le PR lorsque l'ancienne page est une page .html ?

J'ai une idée à vous soumettre :
si le robot demande l'ancienne page, le serveur le renvoie vers la page 404. Or celle-ci peut-être personnalisée. Je peux peut-être y mettre un script qui renvoie le statut 301 pour cette page là ?

Qu'en pensez-vous ?
 
WRInaute discret
En effet ça permettrai d'informer le moteur du changement de page. Et à ne pas lui refaire diriger en 404 à chaque fois.

Par contre pour récupérer le PR et l'indexation ça me parait impossible étant donné que ce n'est pas la même page.

Tu peux juste espérer que la nouvelle page va voir son PR remonter rapidement ^^
 
Nouveau WRInaute
Bonjour,

Pardonnez-moi pour mon insistance, mais ma question se trouvant en fin de page, j'ai peur qu'elle passe inaperçue. ;)

Mon message est le dernier en bas de la page 2.

Merci de me donner votre diagnostique et/ou vos solutions. :(
 
WRInaute discret
raphaelno a dit:
C'est ensuite que ça devient bizarre.

J'ai fait un RedirectPermanent dans le fichier htaccess à la racine de monsite.com .
Code:
RedirectPermanent /monalias http://www.monalias.fr

J'ai d'abord cru que ça marchait car toutes les requêtes sur les répertoires et sous-répertoires renvoient bien sur les bons répertoires de mon alias.
Mais là ou ça cloche c'est quand je donne l'adresse d'une page (par exemple index.php ou viewforum.php?id=2). Là, il ignore totalement ma redirection, sans rien dire, et il affiche la page sur monsite.com.

Je n'y comprends rien.

Ca vous dit quelque chose ?


P.S.: je n'ai pas donné les vrais adresses car je ne suis pas sur que la charte le permette. Néanmoins je n'ai aucun intérêt à afficher ici l'adresse de mon site principal (pas l'alias, l'autre) que je ne tiens pas à faire référencer.
Bizarre en effet.
Pour moi ça doit passer. Mais le fait de rediriger sur un autre domaine est peu être bloqué par une sécurité réseau .. :?

Peu être que ton module DE REDIRECTION est "bridé" ..
Je soumettrai le problème à l'admin de ton serveur d'hébergement à ta place.

*édité pour erreur de diagnostique
 
Nouveau WRInaute
comment vérifier que la 301 a fonctionné ?

Merci FrozenDoom pour cet éclairage :)
J'ai donc testé, et j'ai bien une redirection qui se fait. Comment puis-je être sûr que cette redirection est bien prise avec le statut 301 par le moteur ? Peut-on récupérer l'en-tête http avec un simple navigateur ?

Pour ceux que cela intéresse, voici le code utilisé (en asp) sur la page 404 personnalisée :

<%@ Language=VBScript %>
<%
'nom de la page courante
URL = LCASE(Request.serverVariables("SCRIPT_NAME"))
page = MID(url,INSTRREV(URL,"/")+1)


'RECUPERATION DE L'URL PROVOQUANT L'ERREUR 404
referer = request.querystring

if referer<>"" then
referer=MID(referer,5) 'on enleve 404; dans le querystring
S=INSTR(referer,":80")
if S>0 then ' si le serveur a rajouté le port :80
refercorr=LEFT(referer,S-1)&MID(referer,S+3)
referer=refercorr
end if
if referer="http://www.example.com/anciennepage.htm" then
Response.Status="301 Moved Permanently"
Response.AddHeader "Location", "http://www.example.com/nouvellepage.htm"
end if
%>

Merci aux scripteurs "aspiens" de me dire s'ils y voient une faille de sécurité...
 
Nouveau WRInaute
FroZenDooM a dit:
Peu être que ton module d'URL rewriting est "bridé" ..
RedirectPermanent est une commande du module "URL rewrite" ?
Je ne pensais pas. :?

Si c'est bien le cas je suis effectivement dans la merde car mon héberger n'est pas censé le gérer.
Je soumettrai le problème à l'admin de ton serveur d'hébergement à ta place.
Aie, je craignais ce genre de réponse.

Je suis chez online.
J'espère ne pas avoir besoin de les contacter.
Il sont sacrement long à répondre. Et puis la dernière fois que je les ai contacté (pour un autre problème) ils m'ont répondu complètement à coté de la plaque.

Du coup je préfère cerner au plus précisément le problème avant de les appeler... histoire qu'ils n'aient pas ... à réfléchir.

Enfin vous l'aurez compris, les appeler c'est vraiment le dernier recours. :(
 
Nouveau WRInaute
FroZenDooM a dit:
Bizarre en effet.
Pour moi ça doit passer. Mais le fait de rediriger sur un autre domaine est peu être bloqué par une sécurité réseau .. :?
Tu peux m'expliquer ça ? Ca marche comment ?

En même temps je reste sur le même serveur (même adresse ip & même position dans l'arborescence), donc je vois pas quel problème de sécurité ça pourrait poser.
 
WRInaute discret
OUps non je me suis trompé ! Je réédit ça.
Ce n'est pas le module URL rewriting mais dans la config du serveur plutôt ... Dsl !

*édité pour répondre à ton autrê question

Je saurais pas vraiment expliquer mais il faut demander à ton administrateur du serveur... Il saura mieux te dire si ça pose un problème.
 
Nouveau WRInaute
FroZenDooM a dit:
OUps non je me suis trompé ! Je réédit ça.
Ce n'est pas le module URL rewriting mais dans la config du serveur plutôt ... Dsl !

*édité pour répondre à ton autrê question

Je saurais pas vraiment expliquer mais il faut demander à ton administrateur du serveur... Il saura mieux te dire si ça pose un problème.
Bon bin, je crois que je suis bon pour le mail aux couillons de service.

Finalement c'est peut être lié au problème que j'avais eu précédemment.
Au moment de la mise en service de l'alias de nom de domaine. Tout fonctionnait sauf les pages en php. Les dossiers, les pages html, les images, tout apparaissait bien à la nouvelle adresse, on pouvait même voir les pages php dans les dossiers sans index. Mais lorsqu'on appelait une des pages php, ça renvoyait toujours un "URL not found" suivi de l'adresse absolue sur mon hébergement (et non pas l'adresse sur l'alias... bizarre ! ).

Je n'ai jamais su quelle connerie ils avaient fait. Mais ils ont bien fini par reconnaître leur erreur et par la corriger.

Est-ce que mon nouveau problème serait lié ?

Il faut que je vérifie avec une page html...
 
Nouveau WRInaute
Et voilà, bingo !

Seul les fichiers php sont affectés par le problème.
Aucune incidence sur les fichiers html.

Mais qu'est-ce que c'est que ce truc ?
 
Nouveau WRInaute
shrom a dit:
Si je peux me permettre, la bonne façon de faire une redirection 301 en php4 et php5 et HTTP/1.1 est:
Code:
header('HTTP/1.1 301 Moved Permanently', true, 301);
header ("Location: $URL"); 
exit();

Le code
Code:
header("Status: 301 Moved Permanently");
est un viel héritage de php3 et HTTP/1.0 et renverra un code 302 dans 90% des cas.

Désolé de faire remonter ce topic mais sa réflexion était interressante.
Donc il faut réellement utiliser ce code ci dessous ?
Code:
header('HTTP/1.1 301 Moved Permanently', true, 301);
 
Nouveau WRInaute
redirection HTML

J'ai lu
Redirection par balise META Refresh

La redirection est définie par la balise META http-equiv="Refresh". Elle donne l'ordre au navigateur de rediriger l'internaute vers une URL spécifiée au bout d'un certain nombre de secondes.

Exemple (redirection vers la page "nouvelle-page.html" au bout de 5 secondes) :

<meta http-equiv="Refresh"
content="5;URL=nouvelle-page.html">

Pour le référencement : il ne faut pas l'utiliser ! En effet, cette balise a trop souvent été utilisée en fixant le nombre de secondes à zéro, en général pour faire une page satellite. A proscrire si possible (nous avons rarement eu vent de problèmes liés à l'utilisation de ce type de redirection, mais il est de toutes façons préférable de passer par une redirection de type 301)."

Merci pour l'info, mais si je veux faire une redirection 301 en HTML, ? (ya que de sinfos pour le PHP)

Merci
 
WRInaute accro
Tu ne peux pas le faire en HTML, justement.

en php, asp ou cfm (il me semble), tu peux envoyer des entêtes de page particuliers, mais pas en html.

L'alternative se trouve dans la mise en place d'un fichier .htaccess à la racine du site.
 
Nouveau WRInaute
Bonjour,

Je vous expose la situation avant de vous parler de mon problème :

- Mon site est hebergé chez Free (suxbox.free.fr)
- J'ai acheté le nom de domaine suxbox.com avec seulement 5Mo d'espace Web
- Le nom de domaine suxbox.com redirige sur suxbox.free.fr

Et voilà mon problème :

Lorsque l'on visite le site à partir de l'url suxbox.com et que l'on suit un lien (pour l'exemple : "Les Jeux" dans le menu de gauche), l'url dans la barre d'adresse du navigateur reste suxbox.com.
Alors que j'aimerais qu'elle devienne : suxbox.com/liens-jeux.php

J'ai bien lu différents articles sur les redirections mais je ne trouve pas la solution à mon problème :?:

Merci d'avance pour votre aide ;)

PS : Par experience, je sais que les pages sont tout de même indexées par les moteurs. Mais c'est pour ce qui est du rafraichissement des pages (le visiteur revient directement à l'accueil du site) ou les liens qui pourraient être fait vers les pages de mon site, ça pause problème (par exemple : un visiteur arrive sur mon site via un moteur de recherche par la page liste-jeux.php, l'url restera suxbox.com/liste-jeux.php durant toute sa visite...).

PS2 : j'espère avoir été le plus claire possible, dsl de ne pas avoir mit de lien c'est pour éviter que mon site soit indexé tout de suite !
 
Nouveau WRInaute
redirect PHP

bonjour a tous

je viens de creer une redirection php sur 1 de mes sousdomaines appellé à disparaitre

header(
"Status: 301 Moved Permanently", false, 301);
header(
"Location: http://www.votresite.com/unepage.htm");
exit();

je verifie le header et le code retourné est 302 ???
avant j'avais essayé avec un redirect serveur et la aussi j'avis le code 302 ...
comment faire pour passer a 301 ??

merci de votre aide
 
Nouveau WRInaute
Salut a tous

Cet article est intéressant :)

Je voulais savoir si vous connaissiez un moyen de temporiser une redirection en javascript ?

Avec le meta tag refresh ou la fonction header de php c'est possible mais en js quelle est la bonne méthode ?


J'ai trouvé ce petit code :
Code:
<script type="text/javascript">
window.setTimeout("location=('http://www.votresite.com/votrepage.html');",4000)
</script>
 
Nouveau WRInaute
Redirection Htaccess style *.* (à la DOS)

Bonjour,

J'avais plusieurs pages qui débutaient par "module.php?name=quelquechose..." :

Code:
/modules.php?name=your_account&top=userinfo&username=coco
/modules.php?name=nature&page=ciel.html
/modules.php?name=......

Étant donné que l'interface n'existe plus et que ces pages non plus, je me demandais s'il y avait une méthode générique de pouvoir rediriger les pages commençant par un certain nom sans connaître la fin du nom du fichier. Un peu comme lorsqu'on veut copier sous DOS les fichiers "machin*.doc" --> la commande dit de copier tous les fichiers débutant par machin et pouvant avoir d'autres caractères avant le point.

Ici, ce serait de prendre toutes les pages débutant par /modules.php?name= et de les renvoyer, par exemple, à l'accueil du site. Est-ce que cela peut se faire dans un fichier htaccess?

Merci!
 
Discussions similaires
Haut