[RESOLU]Url rewriting qui marche pas [conflit nom fichier]

WRInaute accro
Bonjour

Je sèche sur une règle de réécriture :

Ma page dynamique :
/recherche2.php?p=une,requete&page=4

Mon URL réécrite :
/recherche2/page-4/une,requete.html

Ma règle dans le .htaccess :
Code:

RewriteRule ^recherche2/page-(.*)/(.*)\.html$ /recherche2.php?p=$2&page=$1 [L]


Je ne parviens à récuperer aucune des deux valeurs de $_GET['page'], ou $_GET['p'] ... je seche .

PS : ce n'est pas une question de / placés devant "recherche2"

Quelqu'un peut m'aider ?
 
WRInaute accro
Et avec une de celles-ci?

Code:
RewriteRule ^recherche2/page-(.*)/(.*)\.html$ /recherche2.php?p=$2&page=$1 [L]

RewriteRule ^recherche2/page-([0-9]+)/(.*)\.html$ /recherche2.php?p=$2&page=$1 [L]

RewriteRule ^recherche2/page-([0-9]+)/(.*).html$ /recherche2.php?p=$2&page=$1 [L]

+ petite vérif:

Est-ce que tu as mis "RewriteEngine On" avant ?
Est-ce que l'hébergement accepte l'URL rewriting ?

;)
 
WRInaute accro
Merci pour vos réponses messieurs les modérateurs ;)
une interpellation directe marche bien ;)
Récapitulons :

Code:
RewriteRule ^recherche2/page-(.*)/(.*)\.html$ /recherche2.php?p=$2&page=$1 [L]
Pas mieux ... :?

Code:
RewriteRule ^recherche2/page-([0-9]+)/(.*)\.html$ /recherche2.php?p=$2&page=$1 [L]
Pas mieux ... :?

Code:
RewriteRule ^recherche2/page-([0-9]+)/(.*).html$ /recherche2.php?p=$2&page=$1 [L]
Pas mieux ... :(
+ petite vérif:

Est-ce que tu as mis "RewriteEngine On" avant ?
Est-ce que l'hébergement accepte l'URL rewriting ?

;)
Oui, mon hébergement accepte l'URL rewriting, et j'ai mis Rewrite Engine On ... mes autres règles fonctionnent bien ...

e-kiwi a dit:
et combien as tu de regles dans ton rewriting ?

J'en ai 12, et celle ci est en première position ... ouiinnnnn...
 
WRInaute accro
e-kiwi a dit:
tu peux coller ton htaccess ici ?

Bien sur, le voici :

Code:
RewriteEngine on

RewriteRule ^recherche2/page-([0-9]+)/(.*).html$ /recherche2.php?p=$2&page=$1 [L] 

RewriteRule ^recherche2/(.*)\.html$ /recherche2.php?p=$1
RewriteRule ^communaute-page-(.*)\.html$ /membres1.php?page=$1 [L]
RewriteRule ^messages-(.*)-page-(.*)\.html$ /messages.php?userid=$1&page=$2 [L]
RewriteRule ^messages-(.*)\.html$ /messages.php?userid=$1 [L]
RewriteRule ^supporter-(.*)\.html$ /membres1.php?userid=$1 [L]
RewriteRule ^forum-ligue-([0-9]+)\.html$ /forum.php?div=$1 [L]
RewriteRule ^forum_([0-9]+)\.html$ /forum2.php?forum=$1 
RewriteRule ^forum_([0-9]+)-page-([0-9]+)\.html$ /forum2.php?forum=$1&page=$2 
RewriteRule ^forum_article-([0-9]+)-([0-9]+)\.html$ /forum_article.php?article=$1&forum=$2 
RewriteRule ^forum_article-([0-9]+)-([0-9]+)-page-([0-9]+)\.html$ /forum_article.php?article=$1&forum=$2&page=$3 [L]


ErrorDocument 404 /404.php

A noter que la regle n°2 ne fonctionne pas non plus quand j'appelle l'URL www.example.com/recherche2/pauleta.html
par exemple. j'arrive bien sur la page recherche2.php mais les variables en paramètres ne sont pas récupérées.

Mais toutes les autres règles fonctionnent.

Mes récupérations de variables :
Pour le cas n°1,


pour la variable "p"
Code:
if(isset($_GET['p'])){$phrase=$GET['p'];}

pour la variable "page"
Code:
if(isset($_GET['page'])){$postpage=$_GET['page'];}
 
WRInaute accro
nikoshr a dit:
Juste pour évacuer des doutes
www.example.com/recherche2.php?p=test renvoie bien quelque chose?

Oui ça renvoie ce que je veux.
www.example.com/recherche2.php?p=test&page=5
renvoie aussi ce que je veux.

nikoshr a dit:
Et est-ce que
Code:
RewriteRule ^recherche2-(.*)\.html$ /recherche2.php?p=$1 [L]
ou
Code:
RewriteRule ^recherche2-(pauleta)\.html$ /recherche2.php?p=$1 [L]
donne quelque chose avec www.example.com/recherche2-pauleta.html

Je sais, ca a l'air idiot, mais sait-on jamais.
Non ce n'est pas idiot, j'ai essayé ;) et ça ne marche pas.

:evil: :evil: :evil: :evil: :evil: :evil:

Je vais prendre le problème à l'envers :

Premièrement :
je souhaite réécrire sous la forme
http://www.example.com/recherche2/zidan ... ,2006.html
une url de type
http://www.example.com/recherche2.php?p ... boule,2006
(cette dernière fonctionne)

Deuxiemement,
je souhaite réécrire sous la forme
http://www.example.com/recherche2/page- ... ,2006.html
une url de type
http://www.example.com/recherche2.php?p ... 006&page=5
(cette dernière fonctionne)

Quelles règles dois-je mettre en place ???
 
WRInaute occasionnel
Les règles proposées dans ton .htaccess fonctionnent chez moi, donc il doit y avoir un conflit quelque part.
J'imagine que tu n'as pas accès à la configuration Apache, et que tu ne peux donc pas mettre en place les logs de mod_rewrite?
 
WRInaute accro
non, je suis en mutualisé ... :s
chez Sivit
mais comprends toujours pas pourquoi ça marche pas, mes parametres passent bien avec l'adresse .php , ma règle semble ok, j'arrive bien sur la bonne page, mais je me casse les dents sur la récupération des variables sur l'url réécrite.
Vais fouiller dans les forums ce soir moa ... :c
 
WRInaute accro
YES !

Resolu, il y avait un conflit (que je n'ai pas encore très bien compris) entre le "recherche2" de l'url reecrite et le nom de la page en php, "recherche2.php"

il a suffit que je renomme mon fichier recherche2.php en search.php, modification de la seconde partie de ma règle (l'appel a la page php) pour que ça fonctionne.

quand j'aurai le temps j'essaierai de comprendre

En tout cas merci pour votre aide messieurs et bonne soirée
 
Nouveau WRInaute
Désactiver la négociation de contenu

Je remonte ce vieux topic car je viens de trouver une solution :

Si vous ne voulez pas que Apache renvoie la page
www.monsite.com/mapage.php
quand www.monsite.com/mapage est demandé,
il faut désactiver l'option de négociation de contenu en ajoutant la ligne suivante dans votre fichier htaccess :

Code:
Options -Multiviews

Testé et approuvé !

Source : http://www.urlrewriting.fr/scripts39-Snipet.html
 
Discussions similaires
Haut