Redirection impossible depuis une page perso 404 ?
10 messages
• Page 1 sur 1
Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics
- TicTacToe
- Nouveau WRInaute

- Messages: 7
- Inscription: 28 Fév 2006
Redirection impossible depuis une page perso 404 ?
Bonjour à tous
J'ai redirigé mes pages 404 vers mon fichier php se nommant /404.php.
Ceci à l'aide d'un .htaccess classique.
tout est OK jusqu'ici, ma page 404.php est bien prise en compte.
Par contre, au sein de cette page 404.php, je souhaite faire une redirection automatique vers une autre page (selon certains param...)
OR il s'avère que la redirection au niveau serveur, via script php avec Header ne fonctionne pas ! j'ai du me rabattre sur une redirection html avec 'meta'.
Je vous donne mon code entier, de mon script de mon fichier 404.php.
Pourriez vous m'affirmer ou m'infirmer si mon code est correct, et si c'est le cas, qu'il est effectivement impossible de faire une redirection php avec header( ... ) ???
Merci d'avance Very Happy
La redirection HTML fonctionne correctement (testé et retesté).
Pour tester la redirection via PHP, je retire tout le code entre Début/Fin HTML, et j'enlève le commentaire sur Header( ... ).
Résultat avec le Header(...) en php:
IE -> 404 de windows
FireFox -> page blanche.
fichier /404.php
PS modo: Je suis désolé, j'ai posté aussi dans le forum php... mais je crois que la place de mon post est mieux ici finalement.
J'ai redirigé mes pages 404 vers mon fichier php se nommant /404.php.
Ceci à l'aide d'un .htaccess classique.
tout est OK jusqu'ici, ma page 404.php est bien prise en compte.
Par contre, au sein de cette page 404.php, je souhaite faire une redirection automatique vers une autre page (selon certains param...)
OR il s'avère que la redirection au niveau serveur, via script php avec Header ne fonctionne pas ! j'ai du me rabattre sur une redirection html avec 'meta'.
Je vous donne mon code entier, de mon script de mon fichier 404.php.
Pourriez vous m'affirmer ou m'infirmer si mon code est correct, et si c'est le cas, qu'il est effectivement impossible de faire une redirection php avec header( ... ) ???
Merci d'avance Very Happy
La redirection HTML fonctionne correctement (testé et retesté).
Pour tester la redirection via PHP, je retire tout le code entre Début/Fin HTML, et j'enlève le commentaire sur Header( ... ).
Résultat avec le Header(...) en php:
IE -> 404 de windows
FireFox -> page blanche.
fichier /404.php
- Code: Tout sélectionner
<?php
// Inits
$dns = $_SERVER['HTTP_HOST'];
$chemin_et_param = $_SERVER['REQUEST_URI'];
$chemin_temp = explode( '?', $chemin_et_param );
$chemin = $chemin_temp[ 0 ];
// Choix décalage
if ( $dns == 'www.xxx.fr' ) $decalage = '/xx';
if ( $dns == 'www.yyy.com' ) $decalage = '/yy';
if ( $decalage == '' ) exit();
// Redirection ou page d'accueil
if ( is_readable( '.' . $decalage . $chemin ) )
$redir = $dns . $decalage . $chemin_et_param;
else
$redir = $dns;
// header( 'Location: http://' . $redir ); // MARCHE PAS !
// DEBUT HTML
echo( '<html><head>' );
// redirection html
echo( '<meta http-equiv="refresh" content="0;url= ' );
echo( 'http://' . $redir );
echo( '">' );
// page d'attente
echo( '</head><body>' );
echo( 'Un instant s.v.p.<br>' );
echo( 'Please wait a moment<br><br><br>' );
echo( 'redirection vers: ' . $redir . '<br><br>');
//echo( 'URL demandée: ' . $chemin_et_param . '<br><br>' );
//echo( 'chemin testé: ' . $decalage . $chemin . '<br><br>' );
// remplissage pour pb IE 512 octets
echo( '
<small style="color: rgb(255, 255, 255);"><small><small><small><small><small><small><small>
fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill<br>
fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill<br>
fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill<br>
fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill<br>
fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill<br>
fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill<br>
fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill<br>
fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill<br>
fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill<br>
fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill<br>
fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill<br>
fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill<br>
fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill<br>
fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill<br>
fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill<br>
</small></small></small></small></small></small></small></small>
');
echo( '</body></html>' );
// FIN HTML
?>
PS modo: Je suis désolé, j'ai posté aussi dans le forum php... mais je crois que la place de mon post est mieux ici finalement.
- TicTacToe
- Nouveau WRInaute

- Messages: 7
- Inscription: 28 Fév 2006
En gros, dans une page 404 personnalisée, dans IE/Options Avancées/ il y a une option nommée 'Afficher les erreurs HTTP simplifiées par défaut' qui est cochée par défaut.
Le résultat ? toute page 404 qui fait moins de 512 octets, est ignorée et à la place est affichée la fameuse page 404 de Windows...
Sur FireFox il n'y a pas le problème.
D'ou le remplissage artificielle, pour que la page soit traitée par IE et que la redirection méta se fasse ! (en attendant que je puisse trouver une solution pour faire la redirection en php si c'est possible ??
Après une courte recherche sur le net
http://www.apachefrance.com/Articles/7/page3.html
Note pour les utilisateurs d'Internet Explorer
Internet Explorer 5 et supérieur incluent des pages d'erreur standards présentées à l'internaute si le site Web ne propose pas de pages personnalisées OU si la taille de ces pages est inférieure à une certaine taille en octets (256 ou 512 selon le cas).
Pour contourner ce "problème", vous pouvez soit compléter la page d'erreur avec des commentaires HTML afin d'atteindre 512 octets, soit opter pour l'une des deux modifications suivantes dans Internet Explorer :
• Dans les options d'Internet Explorer, onglet "Avancés", décocher la case "Afficher des messages d'erreur HTTP simplifiés",
• Dans la base de registre, rechercher le dossier HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\ErrorThresholds. Vous trouverez alors plusieurs entrées correspondant à un code HTTP et la taille de page minimum attendue pour afficher la page du site plutôt que la page interne d'IE.
-

jeanluc - WRInaute accro

- Messages: 3062
- Inscription: 3 Mai 2004
Re: Redirection impossible depuis une page perso 404 ?
TicTacToe a écrit:Par contre, au sein de cette page 404.php, je souhaite faire une redirection automatique vers une autre page (selon certains param...)
OR il s'avère que la redirection au niveau serveur, via script php avec Header ne fonctionne pas ! j'ai du me rabattre sur une redirection html avec 'meta'.
Bonjour,
Il y a une contradiction dans ta demande. D'une part, tu utilises la technique de la page 404 personnalisée qui est faite pour renvoyer un code "erreur 404" au visiteur et, d'autre part, tu essaies de renvoyer un code de redirection (301 ou 302 ?). Clairement, ta page ne peut renvoyer qu'un seul code.
Jean-Luc
- TicTacToe
- Nouveau WRInaute

- Messages: 7
- Inscription: 28 Fév 2006
??? je comprends pas ...
Je comprends pas ton interrogation.
En fait je viens de fusionner 2 sites qui avaient chacun leur espace et leur DNS. Ils se retrouvent sur 1 seul espace avec les 2 DNS pointants sur ce même espace dorénavant.
Ces 2 sites je les ai mis chacun dans un dossier différent, c'est quand même plus propre.
Donc, pour que ce soit tranparent pour le user, s'il à bookmarké un lien d'un des 2 sites, il ne sera plus valide... SAUF si je gère le décalage de dossier.
URL Invalide (sans le décalage de dossier) -> page 404 perso -> traitement de l'URI -> redirection dans le bon dossier OU page d'accueil si l'URI ne peut vraiment pas être retrouvée. Et ceci, en fonction du DNS tapé pour accéder à l'un des 2 sites.
le code que j'ai posté, en laissant le commentaires sur le code PHP header(...) fait exactement ce que je veux. Cela fonctionne.
Mais ca me parait moyennement satisfaisant car cela peut faire apparaitre la page de redirection pdt qq sec (vu que c'est traité coté client)... en php ce serait mieux, mais ca marche pas
PS: la redirection sur l'index principal de l'espace traite déjà ma redirection sur l'un des 2 sites en fonction du DNS tapé par le user, et là ca fonctionne très bien avec le header(...) en PHP
Je comprends pas ton interrogation.
En fait je viens de fusionner 2 sites qui avaient chacun leur espace et leur DNS. Ils se retrouvent sur 1 seul espace avec les 2 DNS pointants sur ce même espace dorénavant.
Ces 2 sites je les ai mis chacun dans un dossier différent, c'est quand même plus propre.
Donc, pour que ce soit tranparent pour le user, s'il à bookmarké un lien d'un des 2 sites, il ne sera plus valide... SAUF si je gère le décalage de dossier.
URL Invalide (sans le décalage de dossier) -> page 404 perso -> traitement de l'URI -> redirection dans le bon dossier OU page d'accueil si l'URI ne peut vraiment pas être retrouvée. Et ceci, en fonction du DNS tapé pour accéder à l'un des 2 sites.
le code que j'ai posté, en laissant le commentaires sur le code PHP header(...) fait exactement ce que je veux. Cela fonctionne.
Mais ca me parait moyennement satisfaisant car cela peut faire apparaitre la page de redirection pdt qq sec (vu que c'est traité coté client)... en php ce serait mieux, mais ca marche pas
PS: la redirection sur l'index principal de l'espace traite déjà ma redirection sur l'un des 2 sites en fonction du DNS tapé par le user, et là ca fonctionne très bien avec le header(...) en PHP
-

jeanluc - WRInaute accro

- Messages: 3062
- Inscription: 3 Mai 2004
D'accord.TicTacToe a écrit:Ces 2 sites je les ai mis chacun dans un dossier différent, c'est quand même plus propre.
Donc, pour que ce soit tranparent pour le user, s'il à bookmarké un lien d'un des 2 sites, il ne sera plus valide... SAUF si je gère le décalage de dossier.
Je verrais ceci autrement : URL "ancien style" (sans le décalage de dossier) -> traitement par .htaccess qui reconnaît l'URL "ancien style" et qui redirige vers le bon dossier ou la page d'accueil par une redirection 301. Il faut donc agir avant la détection de l'erreur 404.TicTacToe a écrit:URL Invalide (sans le décalage de dossier) -> page 404 perso -> traitement de l'URI -> redirection dans le bon dossier OU page d'accueil si l'URI ne peut vraiment pas être retrouvée. Et ceci, en fonction du DNS tapé pour accéder à l'un des 2 sites.
Quelles sont les différences ? Ici il n'est plus question d'erreur 404, car, en fait, tu ne veux pas indiquer une erreur, mais faire une redirection. Le choix de la redirection 301 est optimal pour le référencement.
D'accord.TicTacToe a écrit:le code que j'ai posté, en laissant le commentaires sur le code PHP header(...) fait exactement ce que je veux. Cela fonctionne.
Mais ca me parait moyennement satisfaisant car cela peut faire apparaitre la page de redirection pdt qq sec (vu que c'est traité coté client)...
Je disais même que ça ne peut pas marcher puisqu'avec ta solution tu essaies d'envoyer pour une seule page, un code 404 et un code 301 ou 302. Pour que ça marche, il ne faut plus partir d'une situation d'erreur 404.TicTacToe a écrit:en php ce serait mieux, mais ca marche pas
J'espère que ceci est plus clair.
Jean-Luc
- TicTacToe
- Nouveau WRInaute

- Messages: 7
- Inscription: 28 Fév 2006
Alors là merci beaucoup !
C'est la 1ere fois que qq'un comprend exactement ce problème
Je dois dire que je suis très novice dans ce type de problème.
Cela me rassure également de savoir que ce n'est pas possible en php.
Je ne saisie pas exactement comment sont gérés ces code 404, 302,301 etc...
qui les envoie, qui les récupère, qui les traite ... ? mais je vais me renseigner.
Actuellement, dans mon .htaccess, je n'ai que:
- Code: Tout sélectionner
ErrorDocument 404 /404.php
SI je comprends bien, c'est au niveau de ce .htaccess, qu'il me faut gérer le décalage
Par contre si le lien n'existe pas, je voudrais revenir sur ma page d'accueil mais.... du site correct / dns
Ex: qqun tape www.xx.fr/undossier/unepage.htm
Dans un 1er temps, le .htaccess va rediriger automatiquement vers le lien:
www.xx.fr/xx/undossier/unepage.htm
si le lien existe, pas de problème, la page est chargée.
Si le lien n'existe pas, un 404 va être générée. Et là je retombe sur le même problème. Car je souhaite que la page principale soit affichée, mais la page principale du bon site !
- si je déclare mon /index.php actuelle comme page 404. Ce fichier index.php fait déjà une redirection vers www.xxx.fr/xx/ ou www.yyy.com/yy/ en fonction du DNS récupéré, donc ca ne marchera pas car je retomberai sur le même pb qu'actuellement
L'URL Rewriting permet visiblement de faire bcp de chose, mais j'y connais rien, je vais potasser sur le forum, il y a l'air d'avoir beaucoup d'infos
En résumé:
J'ai 2 sites logiques sur un meme espace physique
www.xx.fr/xx/
www.yy.com/yy/
étant donné que les 2 DNS pointent sur ce même espace physique.
lorsque un user tape www.xx.fr il doit se retrouver sur www.xx.fr/xx
lorsque un user tape www.xx.fr/bidule il doit se retrouver sur www.xx.fr/xx/bidule
lorsque un user tape www.xx.fr/url_invalide il doit se retrouver sur www.xx.fr/xx
Exactement même topo s'il remplace xx.fr par yy.com !
C'est possible par URLRewriting dans un .htaccess ?? avant que je me lance ?
Dans tous les cas merci de ta réponse précédente Jeanluc
-

jeanluc - WRInaute accro

- Messages: 3062
- Inscription: 3 Mai 2004
Ok.TicTacToe a écrit:Dans un 1er temps, le .htaccess va rediriger automatiquement vers le lien:
www.xx.fr/xx/undossier/unepage.htm
si le lien existe, pas de problème, la page est chargée.
A ce niveau, plutôt que de faire une redirection, tu pourrais faire un include PHP de la bonne page.TicTacToe a écrit:Si le lien n'existe pas, un 404 va être générée. Et là je retombe sur le même problème. Car je souhaite que la page principale soit affichée, mais la page principale du bon site !
Vois aussi ces deux bonnes adresses :TicTacToe a écrit:L'URL Rewriting permet visiblement de faire bcp de chose, mais j'y connais rien, je vais potasser sur le forum, il y a l'air d'avoir beaucoup d'infos
- Le fichier .htaccess
- mod_rewrite et la réécriture d’URL
Tu peux arriver à tes fins en combinant .htaccess et un peu de PHP, mais je n'ai pas le temps d'approfondir pour l'instant.TicTacToe a écrit:C'est possible par URLRewriting dans un .htaccess ?? avant que je me lance ?
Jean-Luc
10 messages
• Page 1 sur 1
Formation recommandée sur ce thème :
Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. 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 :
- Redirection 301 et page 404 perso
- Redirection PHP impossible depuis une page 404 ???
- Générer une erreur 404 en page perso Wanadoo
- Rediriger ses sous domaines sur une page 404 perso
- Redirection 301 puis redirection 302 vers page 404
- Redirection page perso Neuf
- redirection vers page perso
- redirection avec perso.orange, est-ce possible ?
- Redirection pages perso wanadoo et ndd
- redirection de perso.wanadoo vers www.
- Test de lien (type de redirection)
Cet outil vous permet de tester la validité d'un lien pour le référencement. Il vous indique la nature du lien (lien en dur, redirection bien gérée par les moteurs ou redirection mal gérée par les moteurs). - Test HTTP header
Cet outil vous permet de connaître le code HTTP renvoyé par le serveur pour une page donnée.
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

