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 :

URL rewriting, j'y suis presque !


Sujet :

Apache

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 19
    Par défaut URL rewriting, j'y suis presque !
    Bonjour,

    Dans mon htaccess, j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^demande-([0-9]+).html$ index.php?page=demande_fiche.html&demande=$1 [L]
    Quand je tappe : "www.site.com/demande_35.html" ca maffiche bien la page "www.site.com/index.php?page=demande_fiche.html&demande=35".

    Je souhaite que quand on tappe "www.site.com/index.php?page=demande_fiche.html&demande=35" ça traduit directement en "www.site.com/demande_35.html" dans la barre d'adresse.

    Merci pour votre aide, j'y suis presque!

  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
    Pas sûr que tu y sois presque, ce n'est pas particulièrement simple. Il faut arriver à distinguer l'URL /index.php?page=demande_fiche.html&demande=35 provenant d'une réécriture (ta règle) et celle provenant d'un accès direct par le navigateur. Une technique classique est l'ajout d'un paramètre d'URL bidon qui sert à faire la distinction entre les 2 cas. Ce paramètre serait présent uniquement quand tu réécris avec ta règle. La difficulté principale va être le fait de jouer avec le fait que l'ordre des paramètres dans l'URL n'est pas garanti : ça peut être page=...&demande=... ou demande=...&page=..., sans compter le paramètre bidon. Dans ton cas, pour gérer cette combinatoire, je propose de passer par un script PHP qui te permettra d'accéder à tes paramètres d'URL sans tenir compte de l'ordre.

    .htaccess :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    RewriteRule ^demande-([0-9]+).html$ index.php?page=demande_fiche.html&demande=$1&bidon=xx [L]
     
    RewriteCond %{QUERY_STRING} !bidon=xx
    RewriteCond %{QUERY_STRING} page=
    RewriteCond %{QUERY_STRING} demande=demande_fiche\.html
    RewriteRule ^index\.php$ redirect_demande.php [L]
    redirect_demande.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    header("Location: http://.../demande_".$_GET["page"].".html");
    ?>
    Ca pourrait être rendu plus élégant en s'assurant dans le code PHP que les paramètres d'URL page et demande sont bien positionnés et avec des valeurs correctes mais bon.

    Comme quoi, tu y es presque !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 19
    Par défaut
    Bonjour,

    Mon but était de ne rien mettre dans mes pages php. je souhaite tout mettre dans mon htaccess.

    Est-ce possible ?

    Merci.

  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
    Tu n'as rien à mettre dans tes pages PHP, tu as juste une nouvelle page PHP à créer. Mais si ce n'est pas acceptable, oui, c'est possible de faire tout en .htaccess mais c'est très compliqué de gérer l'ordre et l'exactitude des paramètres d'URL "page" et "demande". C'est vraiment ce que tu veux ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 19
    Par défaut
    Oui, je voudrais tout mettre dans le htaccess.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    RewriteRule ^demande-([0-9]+).html$ index.php?page=demande_fiche.html&demande=$1 [L,R=301]
    Avec l'instruction ci-dessus, ça redirige systématiquement dans la barre d'adresse la page "http://www.site.fr/demande-26.html" vers "http://www.site.fr/index.php?page=demande_fiche.html&demande=26".

    Je souhaite faire l'inverse c'est à dire rediriger automatiquement dans la barre d'adresse la page "http://www.site.fr/index.php?page=demande_fiche.html&demande=26" vers la page "http://www.site.fr/demande-26.html".

    Comment faire en touchant uniquement le htaccess ?

    Merci.

  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
    Et bien il faut faire comme j'ai dit utiliser un paramètre d'URL bidon qui sert à faire la distinction entre une URL index.php?page=... taper directement dans la barre d'adresse d'un navigateur et une URL index.php?page=... obtenue par réécriture Apache. La difficulté principale réside dans le fait d'identifier ces URL tapées directement par un utilisateur car on peut taper les paramètres d'URL dans n'importe quel ordre.

    Bref, à l'inspiration, pour gérer tous les cas qui se présentent, ça donnerait ça. Y a sûrement moyen d'avoir que 2 ou 4 règles mais mes compétences en expressions régulières ne savent pas faire :
    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
    26
    27
    28
    29
    30
    31
    32
    33
    RewriteRule ^demande-([0-9]+).html$ index.php?page=demande_fiche.html&demande=$1&bidon=xx [L]
     
    RewriteCond %{QUERY_STRING} !bidon=xx
    RewriteCond %{QUERY_STRING} ^page=demande_fiche\.html&demande=([^&]*)
    RewriteRule ^index\.php$ demande-%1.html [L]
     
    RewriteCond %{QUERY_STRING} !bidon=xx
    RewriteCond %{QUERY_STRING} ^page=demande_fiche\.html&.*&demande=([^&]*)
    RewriteRule ^index\.php$ demande-%1.html [L]
     
    RewriteCond %{QUERY_STRING} !bidon=xx
    RewriteCond %{QUERY_STRING} &page=demande_fiche\.html&demande=([^&]*)
    RewriteRule ^index\.php$ demande-%1.html [L]
     
    RewriteCond %{QUERY_STRING} !bidon=xx
    RewriteCond %{QUERY_STRING} &page=demande_fiche\.html&.*&demande=([^&]*)
    RewriteRule ^index\.php$ demande-%1.html [L]
     
    RewriteCond %{QUERY_STRING} !bidon=xx
    RewriteCond %{QUERY_STRING} ^demande=([^&]*)&page=demande_fiche\.html
    RewriteRule ^index\.php$ demande-%1.html [L]
     
    RewriteCond %{QUERY_STRING} !bidon=xx
    RewriteCond %{QUERY_STRING} ^demande=([^&]*)&.*&page=demande_fiche\.html
    RewriteRule ^index\.php$ demande-%1.html [L]
     
    RewriteCond %{QUERY_STRING} !bidon=xx
    RewriteCond %{QUERY_STRING} &demande=([^&]*)&page=demande_fiche\.html
    RewriteRule ^index\.php$ demande-%1.html [L]
     
    RewriteCond %{QUERY_STRING} !bidon=xx
    RewriteCond %{QUERY_STRING} &demande=([^&]*)&.*&page=demande_fiche\.html
    RewriteRule ^index\.php$ demande-%1.html [L]

Discussions similaires

  1. URL rewriting : je suis perdu !
    Par nicolas2603 dans le forum Apache
    Réponses: 11
    Dernier message: 23/04/2010, 01h26
  2. [Débutant]infos ds session sans cookie ? url rewriting ?
    Par Satanas_et_diabolo dans le forum ASP
    Réponses: 8
    Dernier message: 10/10/2006, 17h13
  3. .htaccess - url rewriting, besoin de conseils
    Par giminik dans le forum Apache
    Réponses: 2
    Dernier message: 25/04/2005, 20h18
  4. Activer l'url rewriting
    Par Otaugames dans le forum Apache
    Réponses: 2
    Dernier message: 09/03/2005, 14h58
  5. Url Rewriting / htaccess
    Par bisi dans le forum Apache
    Réponses: 4
    Dernier message: 25/07/2004, 22h12

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