Fonction header location inopérante

WRInaute occasionnel
Bonjour,

J'ai un problème avec la fonction header location.

J'ai déplacé un site de chez infomaniak sur un rps ovh et du coup la fonction header location ne fonctionne plus.

J'ai fais une batterie de test y compris de faire un fichier php comportant uniquement ce code :

<?php
header( "Status: 403 request forbidden", false, 403);
header( "Location: http://mapage");
?>

aucun retour chariot avant <?php qui est collé en haut du fichier.

Je soupçonne un problème dans php.ini mais je n'arrive pas a trouver lequel

Si vous avez une idée je suis preneur ;)
 
WRInaute accro
johnny-57 a dit:
Bonjour,

J'ai un problème avec la fonction header location.

J'ai déplacé un site de chez infomaniak sur un rps ovh et du coup la fonction header location ne fonctionne plus.

J'ai fais une batterie de test y compris de faire un fichier php comportant uniquement ce code :

<?php
header( "Status: 403 request forbidden", false, 403);
header( "Location: http://mapage");
?>

aucun retour chariot avant <?php qui est collé en haut du fichier.

Je soupçonne un problème dans php.ini mais je n'arrive pas a trouver lequel

Si vous avez une idée je suis preneur ;)

Ca aiderait certainement si tu nous disais ce que tu obtiens. En passant, je ne suis pas convaincu que Location et 403 fassent bon ménage, si? J'ai le sentiment que c'est réservé aux codes en 3xx, mais j'ai la flemme d'aller vérifier dans la RFC.

Jacques.
 
WRInaute occasionnel
On obtient rien, c'est comme si le code n'était pas la, aucune erreur, mais la redirection ne ce fait pas.
Par ailleurs ça fonctionnais très bien chez infomaniak.
 
WRInaute occasionnel
Bon,

J'ai quand même testé en enlevant "header( "Status: 403 Request Forbidden", false, 403);" du script et ça marche

Donc manifestement ça pose quand même un problème même si chez infomaniak ça fonctionnais.

En fait je pourrais bien m'en passer mais je voudrais pas avoir de problème avec google, je m'explique.

Je laisse les spiders acceder à du contenue réservé aux abonnées, donc je vérifie en tête de code l'hote du client connecté, si c'est un spider je laisse passer, si c'est pas un spider je vérifie si le client est connecté à un compte, si oui il passe si non on le redirige vers une page d'erreur.

En fait je voulais absolument mettre un entête dans la redirection en 403 ou 402 afin que si google passe par là de manière anonyme ^^' il comprenne pourquoi du coup il n'a pas accès à la même page que quand il se présente.

Comment faire alors si je ne peux utiliser le code 402 ou 403 dans status ?
 
WRInaute passionné
Hello,

il me semble que la syntaxe "header( "Status: 403 request forbidden", false, 403);" est réservée à la version CGI de PHP. Regarde dans tes logs d'erreur Apache, mais tu obtiens peut être une erreur du genre "malformed header".

Dans tous les cas comme il a été dit, une redirection utilise un code de retour spécifique 3XX (301 et 302 généralement) ; tu ne peux pas faire de redirection sur une erreur 4XX.

Mais pourquoi ne pas afficher directement ta page d'erreur en cas d'erreur 403 ? C'est normalement le but de la chose ;)
 
WRInaute occasionnel
Ben c'est ce que je fais, j'utilise header location pour renvoyer vers une page d'erreur personnalisée.
Et je n'ai aucune erreur à l'écran, juste une page vide de tout code html.

Et j'ai peur de finir en blackliste si google passe de manière anonyme et est redirigé vers la page d'erreur sans l'entête http qui va avec.
 
WRInaute passionné
Mais pourquoi diable veux tu "renvoyer vers une page d'erreur" plutôt qu'envoyer directement cette page d'erreur ?

Une erreur 4XX ou 5XX, c'est sensé afficher une erreur, pas faire une redirection, pourquoi tu ne le fais pas ?
 
WRInaute occasionnel
Ben parce que ma page qui fait la redirection n'est pas une page d'erreur.

J'ai une page a contenue reservé aux abonnées, qui payent pour avoir accès aux informations.
Cette page j'autorise les moteurs à l'indexer sans mise en cache, donc :

Quand la page de contenue est appelée je test si c'est un spider,

si oui affichage de la page,

si non verification du statue de connexion,

si c'est un abonné j'affiche la page

si non je renvoie vers une page qui annonce que c'est un contenue reservé aux abonnés et qui propose l'abonnement.

Pour que google ne me prenne pas en grippe si il passe de manière anonymé par une de ses pages je dit bien que c'est une redirection mais en 402 donc il comprendra qu'il ne peut pas y acceder.

Sauf si j'ai pas tout compris je ne vois pas comment faire d'autre.
 
WRInaute passionné
On va la refaire : un code d'erreur 403 ou 404 ou n'importe quel type d'erreur n'est jamais envoyé "seul", il y a toujours un message qui suit pour expliquer l'erreur. Mais tout ça, c'est dans la même requete HTTP.

En PHP ça pourrait donner :
Code:
if( $notAuthorized() )
{
    header( 'blabla 403' );
    readfile( 'letemplatederreur.html' );
    exit;
}
 
Discussions similaires
Haut