IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Web Perl Discussion :

Script de redirection et l'url rewriting


Sujet :

Web Perl

  1. #1
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut Script de redirection et l'url rewriting
    Bonjour

    J'ai écris un script de redirection, redirect.cgi qui fonctionnait avec l'url rewriting mais aujourd'hui, plus rien ne fonctionne, efin presque

    Voici le script en question:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    #!/usr/bin/perl -w
    # Don't forget chmod 755
     
    use strict;
    use diagnostics;
    use warnings;
     
    use CGI qw(:standard);
    use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
     
    $CGI::POST_MAX=1024*100;
    $CGI::DISABLE_UPLOADS=1;
     
    # Defines the links
    my %redirect_to = (
      "leave-me-your-feedback"=>'/cgi-bin/feedback.cgi',
      "default"=>'/',
    );
     
    # Creates a new CGI object
    my $cgi=new CGI;
     
    # Operations
    my $url=$cgi->param("page") || "default";
    print $cgi->redirect(-uri=> $redirect_to{$url});
    Voici le fichier .htaccess:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    # The rewrite addresses
    RewriteEngine On
    RewriteRule ^leave-me-your-feedback\.html$ /cgi-bin/redirect.cgi?page=leave-me-your-feedback [L]
    Le code html:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="leave-me-your-feedback.html">Feedback form</a>
    Logiquement lorsque je clique sur le lien, je devrais voir apparaître dans la barre d'adresse ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://www.oregnier.org/leave-me-your-feedback.html
    hors, j'obtiens:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://www.oregnier.org/cgi-bin/feedback.cgi
    j'ai modifié mon .htaccess comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    # The rewrite addresses
    RewriteEngine On
    RewriteRule ^leave-me-your-feedback\.html$ /cgi-bin/feedback.cgi [L]
    et cela fonctionne, donc le problème vient bien de mon script mais le soucis, c'est qu'il fonctionnait au début

    Un petit coup de main s'il vous plaît ?

    Merci
    .Olivier

  2. #2
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    La redirection change l'adresse dans la barre d'adresse en HTTP donc le résultat que tu obtiens est normal, les systèmes de RewriteRule sont différents :
    • Avec une redirection, ton navigateur reçoit une réponse HTTP lui disant d'aller sur une autre adresse, donc il est normal que la barre d'adresse change (et ça a toujours été le cas, même si tu ne l'avais pas remarqué )
    • Avec une RewriteRule tout se passe sur le serveur, c'est lui qui redirige "en interne" la requête, le client n'est jamais informé que la page HTML qu'il reçoit n'a pas été généré directement par l'adresse qu'il a tapé, il est donc normal que la barre d'adresse reste identique.


    Note qu'avec mod_perl tu peux écrire des Handlers pour Apache qui te permettrait d'obtenir un effet identique aux RewriteRule (tout se fait en interne du serveur, la barre d'adresse reste identique) avec un script Perl (donc avec une facilité pour utiliser des conditions et des actions complexes difficile à obtenir avec Apache seul). mod_perl est très puissant et permet de faire beaucoup de chose (sans parler de l'énorme gain de vitesse par rapport à du CGI), dommage qu'il ne soit disponible que sur très peu d'hébergeurs mutualisés.

    --
    Jedaï

  3. #3
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Salut Jedai

    Merci pour tes explications, je comprends maitenant
    .Olivier

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. redirection .htaccess ancienne url rewrite
    Par lelectronique.com dans le forum Apache
    Réponses: 13
    Dernier message: 22/01/2015, 21h57
  2. Url Rewriting - Redirections invisibles
    Par MicaelFelix dans le forum Apache
    Réponses: 1
    Dernier message: 21/07/2007, 20h56
  3. [Système] Header redirection 301 et URL rewriting
    Par bobic dans le forum Langage
    Réponses: 6
    Dernier message: 16/04/2007, 20h23
  4. Chemin des scripts avec l'URL Rewriting
    Par mrgingle dans le forum Apache
    Réponses: 1
    Dernier message: 06/01/2007, 12h51
  5. Réponses: 6
    Dernier message: 15/02/2006, 13h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo