This site uses cookies! Learn More

Ce site utilise des cookies !

En continuant à utiliser ce site, vous vous engagez à nous permettre de stocker des cookies sur votre ordinateur.

 

Si nous utilisons des cookies et retenons des données anonymes, c’est pour nous aider à mieux gérer notre mesure d’audience, aider nos partenaires commerciaux à nous rémunérer et nos partenaires publicitaires à proposer des annonces qui vous correspondent.

 

Grâce à ces cookies, le forum est en mesure de savoir qui écrit un message et utile pour le système d'authentification.

 

En cliquant sur « J'accepte », vous acceptez l'utilisation par NAS-Forum de cookies publicitaires et de mesure d'audience fine.

Boris

[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

Modifié par Boris
problème résolu

Partager ce message


Lien à poster
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.

Modifié par lose
enlever ligne de code

Partager ce message


Lien à poster
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.

Partager ce message


Lien à poster
Partager sur d’autres sites

echo ne s'affiche pas puisque il y a une redirection juste avant

ton script ne fonctionne pas puisque trop  de redirection dit le navigateur

Modifié par lose

Partager ce message


Lien à poster
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;
?>

 

Modifié par lose

Partager ce message


Lien à poster
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.

 

Partager ce message


Lien à poster
Partager sur d’autres sites
Invité
Ce sujet ne peut plus recevoir de nouvelles réponses.