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

Apache Discussion :

Problème redirection d'URL


Sujet :

Apache

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de pony99
    Femme Profil pro
    Inscrit en
    Mars 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 161
    Par défaut Problème redirection d'URL
    Bonjour,

    La réécriture d'URL n'est pas mon fort (il faut que je m'y mette un jour sérieusement)

    je veux pour un de mes sites réécrire à la volée les URL sans toucher au code des page.

    J'ai pu réécrire les URL du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exemple.fr/index.php?page=NomDeLaPage
    a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exemple.fr/NomDeLaPage.html
    Mais pas les redirigés, c'est a dire que quand il je met dans l'URL /index.php?page=NomDeLaPage il y a pas de redirection vers NomDeLaPage.html, mais l'affichage de la page est correcte.

    Que je fait un test avec un redirection simple de test1.html vers test2.html j'ai le résultat /test2.html?page=test1 et je ne comprends pas pour quoi

    Voici mon .htaccess

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    RewriteEngine On
    RewriteBase /
    RewriteCond %{HTTP_HOST} ^exemple\.fr$
    RewriteRule (.*) http://www.exemple.fr/$1 [R=301]
    RewriteRule    ^([a-zA-Z0-9]*)\.html$ index.php?page=$1 [L] 
    #RedirectPermanent /index.php?page=NomDeLaPage http://www.exemple.fr/NomDeLaPage.html
    RedirectPermanent /test1.html http://www.exemple.fr/test2.html
    votre aide serait la bien venue merci

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Honnêtement, moi non plus je ne comprends pas pourquoi tu as cette redirection.

    De toute façon, ce que tu cherches à faire n'est pas faisable avec une directive Redirect, car si tu consultes la doc (bon d'accord, elle n'est pas hyper claire), tu verras que Redirect ne travaille que sur la partie chemin et jamais avec la query string. Bref, il faut que tu passes par mod_rewrite.

    Là où il y a un problème c'est qu'un coup tu veux rediriger l'URL /index.php?page=NomDeLaPage et un coup tu ne veux pas. Comment donc Apache peut-il faire pour savoir dans quel cas faire quoi ? L'astuce consiste à ajouter un paramètre d'URL bidon qui permet de savoir dans quel cas tu te trouves : si le paramètre est présent, c'est que l'URL /index.php?page=NomDeLaPage est issue d'une réécriture normale et donc à ne pas rediriger ; s'il est absent, c'est qu'il faut rediriger. Ca donne ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    RewriteRule    ^([a-zA-Z0-9]*)\.html$ index.php?internal_redirect=true&page=$1 [L]
     
    RewriteCond %{QUERY_STRING} !internal_redirect=true
    RewriteCond %{QUERY_STRING} page=(.*)
    RewriteRule index.php /%1.html [R=301]

  3. #3
    Membre confirmé Avatar de pony99
    Femme Profil pro
    Inscrit en
    Mars 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 161
    Par défaut
    Bonjour Mac,

    Merci pour ta réponse,

    En suivant tes conseils j'ai fait la .htacces comme suite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    RewriteEngine On
    RewriteBase /
    RewriteCond %{HTTP_HOST} ^exemple\.fr$
    RewriteRule    ^([a-zA-Z0-9]*)\.html$ index.php?internal_redirect=true&page=$1 [L]
    RewriteCond %{QUERY_STRING} !internal_redirect=true
    RewriteCond %{QUERY_STRING} page=(.*)
    RewriteRule index.php /%1.html [R=301]
    seulement en tapant directement /NomDeLaPage.html j'ai une erreur 404 classique.
    Et avec /index.php?page=NomDeLaPage j'ai une erreur 404 bizarre
    mon url devient http://80.247.XXX.XXX/NomDeLaPage.ht...e=/NomDeLaPage
    ou 80.247.XXX.XXX est l'adresse IP du mon hébergeur

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    J'ai juste indiqué les éléments qui changeaient, en fait, donc faut garder ce qui est avant et qui marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    RewriteEngine On
    RewriteBase /
    RewriteCond %{HTTP_HOST} ^exemple\.fr$
    RewriteRule (.*) http://www.exemple.fr/$1 [R=301]
     
    RewriteRule    ^([a-zA-Z0-9]*)\.html$ index.php?internal_redirect=true&page=$1 [L]
     
    RewriteCond %{QUERY_STRING} !internal_redirect=true
    RewriteCond %{QUERY_STRING} page=(.*)
    RewriteRule index.php /%1.html [R=301]

  5. #5
    Membre confirmé Avatar de pony99
    Femme Profil pro
    Inscrit en
    Mars 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 161
    Par défaut
    Merci

    Cela fonctionne pour les /NomDeLaPage.html

    Mais pour avec /index.php?page=NomDeLaPage toujours la même erreur.

    Avec /index.php?internal_redirect=true&page=NomDeLaPage la page s'affiche correctement.

    Mais comment faire la redirection ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RedirectPermanent /index.php?internal_redirect=true&page=NomDeLaPage http://www.exemple.fr/NomDeLaPage.html
    ne fonctionne pas

  6. #6
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Après avoir testé chez moi, il manque en effet un ? pour gommer la query string dans la redirection. Ensuite, pour éviter l'adresse IP, c'est assez étrange mais il faut indiquer une URL absolue avec le bon host name car visiblement celui par défaut utilisé pour construire les redirections n'est pas bon. Donc seule la ligne 10 change :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule index.php http://www.exemple.fr/%1.html? [R=301]

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

Discussions similaires

  1. [URL rewriting] problème redirection 404
    Par simdou dans le forum Apache
    Réponses: 4
    Dernier message: 17/02/2011, 13h12
  2. [ZF 1.10] Appli modulaire - Problème de redirection/d'URL
    Par DarkSeiryu dans le forum MVC
    Réponses: 38
    Dernier message: 24/11/2010, 15h55
  3. [Débutant] Problème de lenteur et de redirection d'URL
    Par homeostasie dans le forum Apache
    Réponses: 2
    Dernier message: 05/03/2009, 17h45
  4. [redirection d'URL] incompatibilité de IE
    Par King Ghidorah dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 04/11/2005, 23h41
  5. [ Débutant ][ JSP ]Redirection d'URL
    Par leminipouce dans le forum Servlets/JSP
    Réponses: 18
    Dernier message: 23/11/2004, 11h32

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