Problème avec ma RewriteRule
16 messages • Page 1 sur 2 • 1, 2
Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics
- van___fanel
- Nouveau WRInaute
- Messages: 12
- Inscription: Lun Mar 19, 2007 16:40
Problème avec ma RewriteRule
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 :
Mes URL sont de la forme
Hélas, voilà ce que j'obtiens lorsque je tente d'afficher Accueil.html :
Où est l'erreur ?
Merci d'avance
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: Tout sélectionner
RewriteRule ^()([a-z]+)\.html$ index.php?page_id=$1&page_title=$2 [L]
Mes URL sont de la forme
- Code: Tout sélectionner
index.php?page_id=1&page_title=Accueil
Hélas, voilà ce que j'obtiens lorsque je tente d'afficher Accueil.html :
Not Found
The requested URL Accueil.html was not found on this server.
Où est l'erreur ?
Merci d'avance
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
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.
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: Tout sélectionner
()
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.
- van___fanel
- Nouveau WRInaute
- Messages: 12
- Inscription: Lun Mar 19, 2007 16:40
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.
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.
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:
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: Tout sélectionner
RewriteRule ^([a-z]+)\.html$ index.php?page_title=$1 [L]
- van___fanel
- Nouveau WRInaute
- Messages: 12
- Inscription: Lun Mar 19, 2007 16:40
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
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
http://127.0.0.1/D:/Program%20Files/EasyPHP%202.0b1/www/Projects/[...]/site/index.php?page_id=accueil&page_title=
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:
etc. Evidemment ce n'est jouable que si le nombre de pages reste faible.
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: Tout sélectionner
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.
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.
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: Tout sélectionner
RewriteRule ^(.*)\.html /page.php?page_id=$2&page_title=$1 [NS,L]
KOogar a écrit: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: Tout sélectionner
RewriteRule ^(.*)\.html /page.php?page_id=$2&page_title=$1 [NS,L]
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é.
KOogar a écrit: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
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.
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.
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.
-

Marie-Aude - WRInaute accro

- Messages: 4921
- Inscription: Lun Juin 05, 2006 14:15
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.
La règle que Koogar t'as donnée est celle que j'utilise, et qui fonctionne.
Le diable est dans les détails comme disent les américains.
Voici un .htaccess:
Les deux premières lignes sont pour un hébergement 1and1.
Voici le code de page.php:
Voici une requête (je peux donner par MP le NDD si quelqu'un veut vérifier de visu tout ce que je dis):
Voici ce que ça imprime:
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.
Voici un .htaccess:
- Code: Tout sélectionner
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: Tout sélectionner
<?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: Tout sélectionner
http://xxxx.com/toto.html
Voici ce que ça imprime:
- Code: Tout sélectionner
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.
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.
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 messages • Page 1 sur 2 • 1, 2
Formation recommandée sur ce thème :
Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Comment éviter les contenus dupliqués (avec/sans le www)
- Aperçu des différents types de redirection
- Google Code Jam 2003
- Référencement d'un forum phpBB
- Matt Cutts déclare la guerre au spamdexing en français (et autres langues)
- Commande site: sur Google et pages ignorées
- Du nouveau dans le Centre pour Webmasters de Live Search
- Tutoriel complet sur les redirections (301, 302, JavaScript, ...)
- Comment résoudre les problèmes de Bourbon...
- Live Search corrige le problème de referrers
- RewriteRule , # et %2F
- RewriteRule et R=301
- RedirectMatch et RewriteRule
- 2 rewriterule à la suite
- RewriteRule + RedirectPermanent
- plusieurs RewriteRule
- Rewriterule en local
- RewriteRule [R=301]
- Pb ReWriteRule + ovh
- rewriterule dans un repertoire
- RewriteRule 301 ou RedirectPermanent
- rewriteRule et pb de niveau d'arborescence
- RewriteCond et RewriteRule[Résolu ^^]
- Problème avec rewriterule !
- RewriteRule et caractères spéciaux
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités



le forum