Aller au contenu

[Résolu]Problème script php pour actions multiples [RESOLU]


Messages recommandés

Bonjour à toutes et à tous,
Je rencontre une difficulté dans l'écriture d'un script php (qui se trouve dans /WEB)
Voici ce que je cherche à faire (3 tâches):

1 - redirection http=>https
2 - si la page demandée est "photo.mondomaine.fr" => réécris l'url en "photo.mondomaine.fr/photo"
(c'est pour arriver à photostation, pour avoir des adresses cohérentes avec les autres du reverse-proxi et pour que le certificat aille bien...)
3 - pour les adresses monsite.fr ou www.monsite.fr => afficher un court texte (3 lignes)

Je suis totalement incompétent en php et c'est pas mieux en html. J'ai vaguement eu une introduction à l'algorithmique et aux bases de la programmation... mais c'était il y a 20 ans (au moins 😓)...
En parcourant le forum (et merci google), j'arrive à afficher le texte correctement avec :

<?php
echo ' <font face="arial" size="2" color="red">Bonjour le monde !</font> <br />';
echo ' <font face="arial" size="2" color="red">Bienvenue sur mon site</font> ';
?>

En "parasitant" des bouts de codes, j'ai aussi la réécriture conditionnelle qui fonctionne (à peu près):

<?php
$http_host=$_SERVER['HTTP_HOST'];
switch ($http_host) {
        // si URL spécifique alors on réécrit l'URL
        case "photo.monsite.fr":
        header("Location: https://$http_host/photo",TRUE,307);
        break;
    default:
        // cas général : redirection http=>https
        header("Location: https://$http_host",TRUE,307);
             }
exit;
?>

(Ce code n'est pas de moi... je fais le "singe savant" en bricolant sur des trucs que j'ai trouvé, et en en ayant une compréhension plus qu'approximative.)

Mais je n'arrive pas à faire les fonctionner "même temps"  ... et les trois "contraintes" en même temps encore moins.

J'arrive au bout du bout de ce que je sais faire; et je suis preneur de toute l'aide que vous pourrez...
Merci

Lien vers le commentaire
Partager sur d’autres sites

essaye comme ceci :

<?php
$http_host=$_SERVER['HTTP_HOST'];
switch ($http_host) {
        // si URL spécifique alors on réécrit l'URL
        case "photo.monsite.fr":
        header("Location: https://$http_host/photo",TRUE,307);
    default:
        // cas général : redirection http=>https
        header("Location: https://$http_host",TRUE,307);
             }
exit;
?>

oiu bien comme ça :


<?php
$http_host=$_SERVER['HTTP_HOST'];
switch ($http_host) {
    default:
        // cas général : redirection http=>https
        header("Location: https://$http_host",TRUE,307);
             }
switch ($http_host) {
        // si URL spécifique alors on réécrit l'URL
        case "photo.monsite.fr":
        header("Location: https://$http_host/photo",TRUE,307);
             }
exit;
?>

Cela fait très longtemps (~20 ans) que je n'ai pas touché à la programmation, alors je n'en suis pas si sûr.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour, et merci de t’intéresser à mon problème.

Tes scripts redirigent bien http => https, mais ne réécrivent pas l'URL correctement (désolé).

Mais grâce à ton aide et à Fenrir ; dans ce fil : https://www.nas-forum.com/forum/topic/57121-aide-à-la-configuration-du-proxy-inversé-pour-photostation/ (à la page 2) j'ai pu faire ça :

<?php
// redirections
$http_host=$_SERVER['HTTP_HOST'];
switch ($http_host) {
    case "photo.monsite.fr":
        header("Location: https://$http_host/photo",TRUE,307);
        break;
    default:
        header("Location: https://$http_host",TRUE,307);
    }
exit;
?>

La redirection http => https fonctionne; ainsi que la réécriture d'URL.

Maintenant, dernière partie du problème pour que les gens qui tapent : monsite.fr ou bien www.monsite.fr (et qui donc se retrouvent en https) aient un message qui s'affiche.

Si je le place comme ça :

<?php
// redirections
$http_host=$_SERVER['HTTP_HOST'];
switch ($http_host) {
    //pour accéder à PhotoStation
    case "photo.bogisa.fr":
        header("Location: https://$http_host/photo",TRUE,307);
        break;
    // pour les autres connexions    
    default:
        // redirection http => https
        header("Location: https://$http_host",TRUE,307);
        //affichage du message
        
echo ' <font face="arial" size="2" color="red">Bonjour le monde !</font> <br />';
        echo ' <font face="arial" size="2" color="red">Bienvenue sur mon site</font> ';

    }
exit;
?>

la redirection http => https se fait bien mais le texte ne s'affiche pas.

J'ai un message : la page n'est pas redirigée correctement.

Lien vers le commentaire
Partager sur d’autres sites

<?php
// redirections 308 donc permanent
// récupétation variable liens
$http_host=$_SERVER['HTTP_HOST'];
// début boucle lien
switch ($http_host) {
    //pour accéder à PhotoStation vérifie si contient photo.bogisa.fr et si oui fait redirection
    case "photo.bogisa.fr":
        header("Location: https://$http_host/photo",TRUE,308);
        break;
    default:
         // pour les autres connexions oui mais pour ne pas tourner en boucle, doit vérifier si pas déjà en https en on  
         if(!isset($_SERVER["HTTPS"]) ||  != "on")
         {
             // redirection http => https
             header("Location: https://$http_host",TRUE,308);
         }
        break;
}
exit;
?>

 

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

désolé pour ma réponse tardive, j'ai été très occupé loin de mon ordi....

et aussi désolé, ton script ne fonctionne pas ... mais je ne saurais pas expliquer pourquoi.

Par conte, j'ai résolu mon problème en écrivant explicitement les cas de redirection http => https avec le nom du service demandé,  et en gardant l'affichage du message pour le cas par défaut.

Ça donne:

<?php
$http_host=$_SERVER['HTTP_HOST'];
switch ($http_host) {
        //----------------------------------------------------
        //cas des applications
    case "photo.mondomaine.fr":
        header("Location: https://$http_host/photo",TRUE,307);
        break;
    case "audio.mondomaine.fr":
        header("Location: https://$http_host",TRUE,307);
        break;
    case "download.mondomaine.fr":
        header("Location: https://$http_host",TRUE,307);
        break;
    case "file.mondomaine.fr":
        header("Location: https://$http_host",TRUE,307);
        break;
    case "video.mondomaine.fr":
        header("Location: https://$http_host",TRUE,307);
        break;
    case "book.mondomaine.fr":
        header("Location: https://$http_host",TRUE,307);
        break;
         //----------------------------------------------------
        //cas par defaut : affichage du message
    default:
        echo ' <font face="arial" size="4" color="black">Bonjour,</font> <br />';
        echo ' <font face="arial" size="4" color="black">Votre demande ne vous permet pas d\'atteindre les contenus</font> <br />';
        echo ' <font face="arial" size="4" color="black">Merci de la reformuler.</font> ';
    }
exit;
?>

Je me pencherai plus tard sur cette histoire de message que j'affiche avec echo , histoire de aire un truc propre avec une page html. Mais ce sera pour plus tard 😅

Je passe en RESOLU.

 

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.