|
Voir le sujet précédent :: Voir le sujet suivant
|
| Auteur |
Message |
| |
|
van___fanel Nouveau WRInaute
Inscrit le: 19 Mar 2007 Messages: 9
|
Posté le : Mar Juin 03, 2008 19:21 Sujet du message: 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 :
| 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 :
| Citation: |
Not Found
The requested URL Accueil.html was not found on this server. |
Où est l'erreur ?
Merci d'avance |
|
| |
|
 |
Vap WRInaute accro

Inscrit le: 17 Juin 2007 Messages: 1032 Localisation: Bouches-du-Rhône
|
Posté le : Mar Juin 03, 2008 20:22 Sujet du message: Problème avec ma RewriteRule |
|
|
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
. 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. |
|
| |
|
 |
van___fanel Nouveau WRInaute
Inscrit le: 19 Mar 2007 Messages: 9
|
Posté le : Mer Juin 04, 2008 17:48 Sujet du message: Problème avec ma RewriteRule |
|
|
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. |
|
| |
|
 |
Vap WRInaute accro

Inscrit le: 17 Juin 2007 Messages: 1032 Localisation: Bouches-du-Rhône
|
Posté le : Mer Juin 04, 2008 21:38 Sujet du message: Problème avec ma RewriteRule |
|
|
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]
|
|
|
| |
|
 |
van___fanel Nouveau WRInaute
Inscrit le: 19 Mar 2007 Messages: 9
|
Posté le : Lun Juin 09, 2008 20:07 Sujet du message: Problème avec ma RewriteRule |
|
|
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
| Citation: |
| http://127.0.0.1/D:/Program%20Files/EasyPHP%202.0b1/www/Projects/[...]/site/index.php?page_id=accueil&page_title= |
|
|
| |
|
 |
Vap WRInaute accro

Inscrit le: 17 Juin 2007 Messages: 1032 Localisation: Bouches-du-Rhône
|
Posté le : Mer Juin 11, 2008 9:50 Sujet du message: Problème avec ma RewriteRule |
|
|
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. |
|
| |
|
 |
KOogar WRInaute accro

Inscrit le: 16 Nov 2004 Messages: 2909 Localisation: Bangalore +3h30
|
Posté le : Mer Juin 11, 2008 11:04 Sujet du message: Problème avec ma RewriteRule |
|
|
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] |
|
|
| |
|
 |
Vap WRInaute accro

Inscrit le: 17 Juin 2007 Messages: 1032 Localisation: Bouches-du-Rhône
|
Posté le : Mer Juin 11, 2008 11:20 Sujet du message: Problème avec ma RewriteRule |
|
|
| 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: |
| 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 WRInaute accro

Inscrit le: 16 Nov 2004 Messages: 2909 Localisation: Bangalore +3h30
|
Posté le : Mer Juin 11, 2008 14:41 Sujet du message: Problème avec ma RewriteRule |
|
|
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 |
|
| |
|
 |
Vap WRInaute accro

Inscrit le: 17 Juin 2007 Messages: 1032 Localisation: Bouches-du-Rhône
|
Posté le : Mer Juin 11, 2008 21:19 Sujet du message: Problème avec ma RewriteRule |
|
|
| 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. |
|
| |
|
 |
KOogar WRInaute accro

Inscrit le: 16 Nov 2004 Messages: 2909 Localisation: Bangalore +3h30
|
Posté le : Jeu Juin 12, 2008 2:29 Sujet du message: Problème avec ma RewriteRule |
|
|
| tu me....grr.. je t'ai envoyé un mot par MP pour arrter ce jeu avec toi.. |
|
| |
|
 |
Vap WRInaute accro

Inscrit le: 17 Juin 2007 Messages: 1032 Localisation: Bouches-du-Rhône
|
Posté le : Jeu Juin 12, 2008 14:45 Sujet du message: Problème avec ma RewriteRule |
|
|
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. |
|
| |
|
 |
Marie-Aude WRInaute accro

Inscrit le: 05 Juin 2006 Messages: 3396 Localisation: More than a plastic girl
|
Posté le : Jeu Juin 12, 2008 15:27 Sujet du message: Problème avec ma RewriteRule |
|
|
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. |
|
| |
|
 |
Vap WRInaute accro

Inscrit le: 17 Juin 2007 Messages: 1032 Localisation: Bouches-du-Rhône
|
Posté le : Jeu Juin 12, 2008 16:14 Sujet du message: Problème avec ma RewriteRule |
|
|
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. |
|
| |
|
 |
e-kiwi Modérateur

Inscrit le: 23 Déc 2003 Messages: 12363 Localisation: Toulouse
|
Posté le : Jeu Juin 12, 2008 16:21 Sujet du message: Problème avec ma RewriteRule |
|
|
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. |
|
| |
|
 |
| |
|
|