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 :

RewriteRule sans effet


Sujet :

Apache

  1. #1
    Membre averti Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Points : 400
    Points
    400
    Par défaut RewriteRule sans effet
    Bonjour,

    Avant de poster ce message j'ai cherché sur la FAQ, les tutoriaux mais j'avoue être complétement perdu et ne plus rien comprendre.

    J'essaie (sans y arrivé) à faire de la réécriture d'URL (WAMPSERVER 2.0).
    J'ai activé le molude d'apache : mod_rewrite
    J'ai créé un fichier .htaccess dans le répertoire de base du nom "site" web. (dev). Il n'y a rien dedans c'est juste pour tester la réécriture.

    Le but étant par partir d'une URL de type :
    dev/index.php?page=produit&name=article1

    Obtenir un affichage dans la barre d'adresse du navigateur une URL de type
    dev/produit/article1.html

    Pour cela j'ai codé ce qui suis dans mon .htaccess
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    RewriteEngine On
    RewriteRule ^([^/]*)/([^/]*)\.html$ /index.php?page=$1&name=$2 [L]
    J'ai créé un index .php avec le script suivant dans le répertoire de base
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php
    session_start();
    if (isset($_GET['page']) && isset($_GET['name']) ){
    	echo $_GET['page'].' '.$_GET['name'];
    } else {
     echo '<a href="index.php?page=produit&name=article1">click</a>';
    }
    ?>
    Lorsque je click sur le lien href affiché par index.php j'obtient bien l'affichage des paramètres reçus mais dans la barre d'adresse de mon navigateur j'ai l'URL suivante :

    dev/index.php?page=produit&name=article1

    Bref ça ne fonctionne pas.

    Un peu d'aide serait bienvenue.

    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Ce que tu as fait c'est afficher le contenu de dev/index.php?page=produit&name=article1 lorsque tu utilise l'adresse dev/produit/article1.html

  3. #3
    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
    Points : 12 977
    Points
    12 977
    Par défaut
    Ca marche parfaitement ! Le problème est dans ton code PHP/HTML :
    Citation Envoyé par SPACHFR Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    session_start();
    if (isset($_GET['page']) && isset($_GET['name']) ){
    	echo $_GET['page'].' '.$_GET['name'];
    } else {
     echo '<a href="index.php?page=produit&name=article1">click</a>';
    }
    ?>
    Forcément, si tu envoies au navigateur un lien index.php?page=produit&name=article1 dans le code HTML, le navigateur va demander cette URL. Visiblement, tu n'as pas bien compris à quoi sert la réécriture d'URL : elle sert à modifier le sens des URL demandées par les navigateurs. Avec ta règle (qui me semble correcte), si le navigateur demande /produit/article1.html, la réécriture d'URL va faire en sorte qu'au final Apache comprend qu'on lui a en fait demandé /index.php?page=produit&name=article1. Mais en aucun cas, Apache ne va modifier le code HTML de tes pages pour faire le processus inverse en transformer tous tes liens en /produit/article1.html.

    Moralité : si tu veux que ton navigateur demande l'URL /produit/article1.html, il faut écrire /produit/article1.html dans ton lien. C'est on ne peut plus logique.

  4. #4
    Membre averti Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Points : 400
    Points
    400
    Par défaut
    Merci pour vos réponses.
    Je suis effectivement arrivé à faire fonctionner cette réécriture dès que j'ai compris que ma compréhension de la réécriture d'URL était fausse (raisonnement inversé ).

    Pour cité _Mac_
    Moralité : si tu veux que ton navigateur demande l'URL /produit/article1.html, il faut écrire /produit/article1.html dans ton lien. C'est on ne peut plus logique.



    Un bon moment de galère mais c'est acquis et du coup j'ai bien bossé la syntaxe des réécritures URL.

    Merci

  5. #5
    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
    Points : 12 977
    Points
    12 977
    Par défaut
    Pas grave, ça arrive souvent au début.

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

Discussions similaires

  1. [forms 6i]execute_query sans effet
    Par pjcejbpojo dans le forum Forms
    Réponses: 11
    Dernier message: 28/04/2006, 17h08
  2. [AJAX] Fontion JS sans effet
    Par LoK dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 31/03/2006, 14h43
  3. Combo sans effet
    Par GBW067 dans le forum Sécurité
    Réponses: 5
    Dernier message: 29/01/2006, 07h48
  4. Requête UPDATE sans effet
    Par Death83 dans le forum Requêtes
    Réponses: 4
    Dernier message: 15/01/2006, 01h23
  5. Sans effet: StringGrid1->Cells[1][1][2] = c ?
    Par Xavier dans le forum C++Builder
    Réponses: 3
    Dernier message: 27/11/2002, 10h32

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