Status: 301 Moved Permanently

Consultez la formation sur les stratégies de liens de WebRankInfo / Ranking Metrics

spyk
Nouveau WRInaute
 
Messages: 6
Inscription: Mar Mar 14, 2006 13:43

Status: 301 Moved Permanently

Message le Mar Mar 14, 2006 13:56

Bonjour a tous !

voila j'ai un gros probleme ...
depuis 2 ou 3 mois je refait le site de mon entreprise (hebergé par online.net), les anciennes pages sont toujours referencer sur google alors que j'ai mis une page 404 perso ... je regarde le header de ma page 404perso et ca m'indique "HTTP/1.x 200 OK" (normalement le htaccess met la valeur "HTTP/1.x 404 Not Found" au header... ms pas chez online !)

mais je ne voudrai pas perdre mon referencement sur google... alors autant faire un RedirectPermantent dans le Htaccess..

Premiere surprise :
le htaccess ne permet pas d'utiliser les "RedirectPermanent" ca fait une erreur 500... J'ai demander a Online et ils m'on repondu un truc du genre : "C'est pas possible et on autre chose a faire que de reparer ca !"
Solution :
Je me suis lancer dans un script en php qui me permeterai de faire la meme chose

Forcement pour savoir ou rediriger la page il faut savoir qu'elle page a été demandée...

Seconde surprise :
la variable globale "$_SERVER['REQUEST_URI']" me donne l'adresse de ma page 404 (page 404 perso appelée grace au htaccess)
Sur EasyPHP, avec le meme script, c'est bien la valeure de la page demandée qui s'affiche
Solution :
l'url de la page demandée est toujour affichée dans la barre d'adresse du navigateur, je vais donc la recuperer en javascript ...

Nouveau probleme :
le javascript fait planter la fonction header() ... c'est normal me direz vous !

Voila je sais pu quoi faire ...

Mon htaccess (qui marche)
Code: Tout sélectionner
ErrorDocument 404 /index.php?p=err&error=404

la variable $p permet d'inclure le message d'erreur dans le desing du site, la meme page est charger si on met une valeur incorrect a $p (faites le test sur le site si vous voulez)

mon code actuel :
Code: Tout sélectionner
$error = @$_GET['error'];
<script>
var URL = document.location.href;
</script>
<?
$request_URL = "<script>document.write(URL);</script>";
$referrer = @$_SERVER['HTTP_REFERER'];

if (ereg("gamme2.htm", $request_URL)){$redirect='http://www.la-palmeraie.fr/index.php?p=Catalogue';}
if (ereg("gamme3.htm", $request_URL)){$redirect='http://www.la-palmeraie.fr/index.php?p=Catalogue';}
if (ereg("gamme4.htm", $request_URL)){$redirect='http://www.la-palmeraie.fr/index.php?p=Catalogue';}
if (ereg("ventes.html", $request_URL)){$redirect='http://www.la-palmeraie.fr/index.php';}

//....


if (@$redirect!='')
{
header("Status: 301 Moved Permanently", false, 301);
header("Location: ".$redirect);
}
else
{
   if($error=='404')
   {
      header("HTTP/1.0 404 Not Found", false, 404);
   }
}
?>


Merci d'avance a tous ceux qui essaient de m'aider !


phpmikedu83
WRInaute accro
WRInaute accro
 
Messages: 1281
Inscription: Sam Aoû 06, 2005 7:34

Message le Mar Mar 14, 2006 14:57

Php, c'est interprété coté serveur, donc interprété avant le javascript ;-)

spyk
Nouveau WRInaute
 
Messages: 6
Inscription: Mar Mar 14, 2006 13:43

Message le Mar Mar 14, 2006 15:11

oué ca je sais, avec mon code j'arrive a recuperer la valeur "document.location.href" dans le php mais ca fait planter le header...
je sais que c'est forcement pas la bonne solution et je cherche une alternative ...


mr_go
WRInaute accro
WRInaute accro
 
Messages: 1945
Inscription: Mer Sep 21, 2005 16:02

Message le Mar Mar 14, 2006 15:12

Pas la peine de répéter hein... ;)

Il faut executer le script PHP avant toute autre envoi.
Dans ce cas, tu envoie un header HTML en premier (car balise <script>).

Ton fichier doit commencer par

<?php
... ton script
?>


Atention, ne saute pas de ligne ou n'ajoute pas d'espace dans ton début de fichier, la balise doit être bien située au premier caractere du fichier...

@+

spyk
Nouveau WRInaute
 
Messages: 6
Inscription: Mar Mar 14, 2006 13:43

Message le Mar Mar 14, 2006 15:28

vous me donnez pas beaucoup de solutions ...
tu dit que je repete ms vous me repondez ce que j'ai dit dans mon premier message : "le javascript fait planter la fonction header()"

Je sais bien que pour le header() il ne faut que du code php avant, c'est pour cela que je vous demande une solution car moi je ne sais plus quoi faire.


e-kiwi
Modérateur
Modérateur
 
Messages: 13848
Inscription: Mar Déc 23, 2003 9:04

Message le Mar Mar 14, 2006 15:30

tu recupere ton adresse en javascript, il te suffit de la recuperer en php à la place, et de faire ton traitement en php :
$_SERVER['REQUEST_URI']

voilà la solution que tu attendais :)


mr_go
WRInaute accro
WRInaute accro
 
Messages: 1945
Inscription: Mer Sep 21, 2005 16:02

Message le Mar Mar 14, 2006 15:51

tu dit que je repete ms vous me repondez ce que j'ai dit dans mon premier message : "le javascript fait planter la fonction header()"


Tu n'as pas posté en double au début ? C'était pour cela, en aucun cas pour ton probleme. ;)

<a cote>
+1 pour E-Kiwi,
$_SERVER['REQUEST_URI']
Et tous tes problemes s'envolent ;)
</a cote>
Dernière édition par mr_go le Mar Mar 14, 2006 15:54, édité 1 fois.


phpmikedu83
WRInaute accro
WRInaute accro
 
Messages: 1281
Inscription: Sam Aoû 06, 2005 7:34

Message le Mar Mar 14, 2006 15:52

e-kiwi a écrit:tu recupere ton adresse en javascript, il te suffit de la recuperer en php à la place, et de faire ton traitement en php :
$_SERVER['REQUEST_URI']

voilà la solution que tu attendais :)


T'aurais pu prendre la peine de lire le post!
Ca t'aurait éviter de répondre à côté :lol:

spyk
Nouveau WRInaute
 
Messages: 6
Inscription: Mar Mar 14, 2006 13:43

Message le Mar Mar 14, 2006 15:55

effectivement je l'avais poster en double (j'ai rectifier)

sinon pour le $_SERVER['REQUEST_URI'] j'ai marquer ca dans mon premier post :

Code: Tout sélectionner
Seconde surprise :
la variable globale "$_SERVER['REQUEST_URI']" me donne l'adresse de ma page 404 (page 404 perso appelée grace au htaccess)
Sur EasyPHP, avec le meme script, c'est bien la valeure de la page demandée qui s'affiche


mr_go
WRInaute accro
WRInaute accro
 
Messages: 1945
Inscription: Mer Sep 21, 2005 16:02

Message le Mar Mar 14, 2006 16:00

et ils m'on repondu un truc du genre : "C'est pas possible et on autre chose a faire que de reparer ca !"

Solution :
Je me suis lancer dans un script en php qui me permeterai de faire la meme chose


Seconde solution: changement d'hébergeur ? =)

Pas facile à imposer dans son entreprise je le reconnais, mais pour ton cas, et étant donné la bonne foi de ton prestataire cela pourrait s'avérer payant. ;)

spyk
Nouveau WRInaute
 
Messages: 6
Inscription: Mar Mar 14, 2006 13:43

Message le Mar Mar 14, 2006 16:03

oué j'y ai penser mais bon mon site est pas bien gros ,
je pense pas que soit valable de changer d'hebergeur pour ca ... surtt qu'on a 2 autres sites chez eux !

enfin si jamais vous avez une autre idée je suis preneur ! meme juste une piste


e-kiwi
Modérateur
Modérateur
 
Messages: 13848
Inscription: Mar Déc 23, 2003 9:04

Message le Mar Mar 14, 2006 16:23

au temps pour moi :)


BobbySixKiller
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 155
Inscription: Jeu Fév 17, 2005 21:19

Message le Dim Juil 15, 2007 21:58

Je me pose une grande question récemment, je gère plusieurs sites, avec des changements notoires dans l'architecture, nom des pages qui changent ( pour le référencement ), hébergé en mutualisé chez 1and1, avec un paquet de bonne redirections 301.

Le problème : 1&1 n'aime pas trop diriger l'erreur 404 .. chaque changement de nom de fichier impose une nouvelle ligne dans le .htaccess .. y'à t-il un moyen de générer ce dernier avec une adresse de fichier php ? Ou de procéder à un quelconque include en son sein ?

Pour info j'ai à peu près 300 redirections de la sorte .. Le projet était un foutoir à ses départs, trop rapidement référence :roll:


HawkEye
Modérateur
Modérateur
 
Messages: 15020
Inscription: Lun Fév 23, 2004 12:33

Message le Lun Juil 16, 2007 9:33

spyk a écrit:effectivement je l'avais poster en double (j'ai rectifier)

sinon pour le $_SERVER['REQUEST_URI'] j'ai marquer ca dans mon premier post :

Code: Tout sélectionner
Seconde surprise :
la variable globale "$_SERVER['REQUEST_URI']" me donne l'adresse de ma page 404 (page 404 perso appelée grace au htaccess)
Sur EasyPHP, avec le meme script, c'est bien la valeure de la page demandée qui s'affiche


Si tu veux pouvoir traiter ces pages pour les rediriger en 301, il ne faut pas les déclarer en 404 auparavant, mais traiter la redirection directement depuis l'URI à rediriger.

++


BobbySixKiller
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 155
Inscription: Jeu Fév 17, 2005 21:19

Message le Lun Juil 16, 2007 9:53

HawkEye a écrit:Si tu veux pouvoir traiter ces pages pour les rediriger en 301, il ne faut pas les déclarer en 404 auparavant, mais traiter la redirection directement depuis l'URI à rediriger.
Pourtant, sur un site hébergée chez ovh, je peux parfaitement declarer 404.php pour erreur 404 et faire des redirections à volonté selon l'URI .. bien plus simple qu'éditer l'htaccess

Status: 301 Moved Permanently

Formation recommandée sur ce thème :

Formation Netlinking (liens et référencement) : apprenez ce qu'est réellement un bon lien pour le référencement et surtout comment en obtenir. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités