Problème avec ma RewriteRule

Discussion dans 'URL Rewriting et .htaccess' créé par van___fanel, 3 Juin 2008.

  1. van___fanel
    van___fanel Nouveau WRInaute
    Inscrit:
    19 Mars 2007
    Messages:
    12
    J'aime reçus:
    0
    Bonjour,

    je tente de me mettre à l'url rewriting, mais je rencontre un problème. Je travaille pour le moment en local.

    Après lecture du tutorial WebRankInfo, voilà ma rewriteRule :

    Code:
    RewriteRule ^()([a-z]+)\.html$ index.php?page_id=$1&page_title=$2 [L]
    Mes URL sont de la forme
    Code:
    index.php?page_id=1&page_title=Accueil
    et je souhaiterais les transformer en Accueil.html, c'est à dire seulement avec la variable $page_title.

    Hélas, voilà ce que j'obtiens lorsque je tente d'afficher Accueil.html :

    Où est l'erreur ?

    Merci d'avance
     
  2. Vap
    Vap WRInaute impliqué
    Inscrit:
    17 Juin 2007
    Messages:
    983
    J'aime reçus:
    0
    Deux questions:

    1. Comment on trouve l'ID a partir de l'adresse en html? Comment on sait que accueil.html est l'ID 1?

    2. Dans ta règle tu a
    Code:
    ()
    . Pourquoi?

    Pour savopri ce qui se passe, remplace le [L] par [R=301]. Tu sauras en quoi est réécrit accueil.html, et donc tu trouvera pourquoi ça ne marche pas.
     
  3. van___fanel
    van___fanel Nouveau WRInaute
    Inscrit:
    19 Mars 2007
    Messages:
    12
    J'aime reçus:
    0
    1. Bien normalement, il n'y pas besoin d'afficher l'id de la page dans l'url "rewritée". Car si j'ai bien compris, l'url rewriting, c'est juste un système qui applique une url statique par dessus une url dynamique, mais le navigateur sait qu'il s'agit de index.php?page_id=1&page_title=Accueil, lorsque il affiche Accueil.html. Ou alors je n'ai pas tout compris.

    2. la première parenthèse vide est justement pour l'id de la page, que je ne souhaite pas afficher dans l'url "rewritée". Cette parenthèse est vide pour que le $1 de la RewriteRule n'affiche rien pour l'id de la page.

    J'ai changée le [L] par [R=301], et il ne s'est rien passé de différent. Aucun message d'erreur.
     
  4. Vap
    Vap WRInaute impliqué
    Inscrit:
    17 Juin 2007
    Messages:
    983
    J'aime reçus:
    0
    l'URL rewriting sert a transformer des urls, c'est tout, et rien de plus.

    avec un R=301, quelle est l'adresse qui s'affiche dans la barre d'adresse de ton navigateur?

    Mais ta règles est mal formée avec ta parenthese vide. Si l'id n'a pas besoin d'etre renseigné il faut que tu mette:

    Code:
    RewriteRule ^([a-z]+)\.html$ index.php?page_title=$1 [L]
    
     
  5. van___fanel
    van___fanel Nouveau WRInaute
    Inscrit:
    19 Mars 2007
    Messages:
    12
    J'aime reçus:
    0
    Sauf que j'ai tout de même besoin de la variable $_GET['page_id'], puisque c'est grâce à elle que je vais chercher le contenu de mes pages dynamiques. Donc mon URL ne peut pas ressembler à index.php?page_title=Accueil, mais doit bien être de la forme index.php?page_id=1&page_title=Accueil

    Pour le moment, avec un R=301, si je demande d'afficher http://127.0.0.1/Projects/[...]/site/Accueil.html, rien ne se passe.

    Si je demande d'afficher http://127.0.0.1/Projects/[...]/site/accueil.html (nom de page sans majuscule initiales), il transforme l'url en
     
  6. Vap
    Vap WRInaute impliqué
    Inscrit:
    17 Juin 2007
    Messages:
    983
    J'aime reçus:
    0
    Il faut donc que tu aie une correspondance entre le nom de la page et son id. Ta première règle ne renseignait même pas l'id soit dit en passant.

    Soit tu fais une règle par page, soit tu as cette correspondance dans une base de donnée, et tu dois faire la correspondance en PHP. Cherche sur le forum, ça a été discuté il y a quelques jours.

    Une règle par page donne quelque chose comme suit:

    Code:
    RewriteRule accueil\.html index.php?page_id=1&page_title=Accueil
    RewriteRule page1\.html index.php?page_id=2&page_title=Titre1
    
    etc. Evidemment ce n'est jouable que si le nombre de pages reste faible.
     
  7. KOogar
    KOogar WRInaute accro
    Inscrit:
    16 Novembre 2004
    Messages:
    4 643
    J'aime reçus:
    81
    je suis pas d'accord avec Vap.. sry

    C'est trés simple a faire ce que tu veux.. mais ne me demande pas pourquoi, il faut ajouter le NS à la fin.

    Code:
    RewriteRule ^(.*)\.html  /page.php?page_id=$2&page_title=$1 [NS,L]
     
  8. Vap
    Vap WRInaute impliqué
    Inscrit:
    17 Juin 2007
    Messages:
    983
    J'aime reçus:
    0
    Pas besoin d'être désolé. NS sert a éviter certaines erreurs. Mais je ne vois pas quelle sera la valeur de page_id avec ta règle. Peux tu m'expliquer?

    Edit: j'ai testé, et c'est bien ce que je pensais, page_id n'est pas renseigné.
     
  9. KOogar
    KOogar WRInaute accro
    Inscrit:
    16 Novembre 2004
    Messages:
    4 643
    J'aime reçus:
    81
    je pense que c'est un probleme au niveua de la boucle globale, c'st pk sans le NS cela renvois sur la page php

    ca etant je te laisse apprecier :
    --http://www.urlrewriting.fr/testpriv/met-ce-que-tu-veux-ici.html
     
  10. Vap
    Vap WRInaute impliqué
    Inscrit:
    17 Juin 2007
    Messages:
    983
    J'aime reçus:
    0
    Ca fait quoi ton test?

    Le test que j'ai fait est de rentrer la règle que tu as donné et d'imprimer page_id et page_title. Seul page_title ($1) est imprimé, et page_id n'est pas défini.
     
  11. KOogar
    KOogar WRInaute accro
    Inscrit:
    16 Novembre 2004
    Messages:
    4 643
    J'aime reçus:
    81
    tu me....grr.. je t'ai envoyé un mot par MP pour arrter ce jeu avec toi..
     
  12. Vap
    Vap WRInaute impliqué
    Inscrit:
    17 Juin 2007
    Messages:
    983
    J'aime reçus:
    0
    Je ne joue pas, j'essaie d'aider. Je pense avoir aidé suffisamment de gens avec leurs problèmes de réécriture pour avoir le droit qu'on ne pense pas que je joue. Il suffit de lire ce forum pour le voir.

    Bref, aucune des règles proposées ne permet de donner une valeur a page_id. C'est simple à vérifier, et j'ai proposé une solution.

    Pas besoin de s'enerver pour ça ni de me dire que je ne dis que des idioties en MP.
     
  13. Marie-Aude
    Marie-Aude WRInaute accro
    Inscrit:
    5 Juin 2006
    Messages:
    16 734
    J'aime reçus:
    177
    Pour utiliser exactement le même type de règle, tu peux récupérer page_id avec $_GET[page_id]

    La règle que Koogar t'as donnée est celle que j'utilise, et qui fonctionne.
     
  14. Vap
    Vap WRInaute impliqué
    Inscrit:
    17 Juin 2007
    Messages:
    983
    J'aime reçus:
    0
    Le diable est dans les détails comme disent les américains.

    Voici un .htaccess:
    Code:
    AddType x-mapp-php5 .php
    
    Options +FollowSymLinks
    
    RewriteEngine On
    
    RewriteRule ^(.*)\.html  /page.php?page_id=$2&page_title=$1 [NS,L]
    
    Les deux premières lignes sont pour un hébergement 1and1.

    Voici le code de page.php:

    Code:
    <?php
    echo 'page_id='.$_GET['page_id'].' page_title='.$_GET['page_title'];
    ?>
    
    Voici une requête (je peux donner par MP le NDD si quelqu'un veut vérifier de visu tout ce que je dis):

    Code:
    http://xxxx.com/toto.html
    
    Voici ce que ça imprime:

    Code:
    page_id= page_title=toto
    
    page_id n'est pas défini. C'est ce que je dis depuis le début. Et page_id n'est pas défini car $2 n'est pas défini dans la règle car il n'y a qu'une seule paire de parenthèses dans l'expression régulière.

    Vous pouvez tourner ça dans le sens que vous voulez, c'est comme ça. Et n'importe qui peut refaire ce test.

    Je ne sais toujours pas ce que le test de Koogar fait par contre. Ce serait bien de le savoir.
     
  15. e-kiwi
    e-kiwi WRInaute accro
    Inscrit:
    23 Décembre 2003
    Messages:
    13 198
    J'aime reçus:
    1
    bah, qu'est ce que vous dites ?

    si il veut recuperer 2 valeurs, c'est à dire page_id et page_title, il doit faire passer ces 2 valeurs dans l'url, à moins de faire la correspondante en php. donc dans ce cas, il devra faire une url du type :

    1,accueil.html ou 1-accueil.html (ou accueil-1, c'est lui qui voit)
    et dans ça regle de rewrite quelquechose du genre (0-9+),(.+).html vers /page.php?page_id=$1&page_title=$2 (ou inverse)

    accueil.html, quelquesoit son rewrite, ne va pas inventer tout seul que l id d'accueil est 1, à moins d'aller le chercher dans la base de données ou autre.
     
  16. Vap
    Vap WRInaute impliqué
    Inscrit:
    17 Juin 2007
    Messages:
    983
    J'aime reçus:
    0
    Merci.
     
Chargement...
Similar Threads - Problème RewriteRule Forum Date
Htaccess et RewriteRule | problème URL Rewriting et .htaccess 25 Septembre 2014
Probleme rewriterule URL Rewriting et .htaccess 13 Mars 2012
Probleme avec les accents dans URL RewriteRule URL Rewriting et .htaccess 14 Juillet 2011
Problème RedirectPermanent ou rewriteRule avec Id URL Rewriting et .htaccess 18 Mars 2009
RewriteRule - problème d'écriture de règle URL Rewriting et .htaccess 26 Janvier 2009
[Résolu]Problème de syntaxe pour une RewriteRule URL Rewriting et .htaccess 5 Mai 2008
Problème avec rewriterule ! URL Rewriting et .htaccess 11 Mars 2008
Problème avec une règle : RewriteRule ^([^.]+)$ URL Rewriting et .htaccess 8 Mai 2007
problème rewriterule infomaniak Problèmes de référencement spécifiques à vos sites 1 Novembre 2005
[Résolu] Problème d'écriture RewriteRule URL Rewriting et .htaccess 27 Avril 2005
Problème avec succession de rewriterules URL Rewriting et .htaccess 8 Novembre 2003
problème avec le développeur Droit du web (juridique, fiscalité...) 22 Juin 2022
Problème désindexation des pages de Google Débuter en référencement 21 Juin 2022
Problème d'indexation de pages sur Google Problèmes de référencement spécifiques à vos sites 31 Mai 2022
problème de redirection non souhaitée Administration d'un site Web 28 Avril 2022
Problème d'indexation Produits Prestashop Crawl et indexation Google, sitemaps 28 Avril 2022
Problème d'affichage des campagnes Google Ads dans un tableau de bord Data Studio AdWords 26 Avril 2022
Problème de vitesse d'affichage des pages sur Analytics Google Analytics 26 Avril 2022
Problème : Google Crawl et Index des pages en No Index et bloqué par le robot.txt Crawl et indexation Google, sitemaps 26 Avril 2022
Problème avec GA4 : nb de visiteurs temps réel et par jour Google Analytics 19 Avril 2022