URL Rewriting qui ne fonctionne pas

WRInaute occasionnel
Bonjour.

Alors voilà mon souci. Je voudrai reécrire les url de certaines des pages de mon site.

Je vais donner un exemple pour ma section "generalites".

j'ai cette url : http://mondomaine/page.php?cat=generalites
et je voudrai : http://mondomaine/generalites .php

Aussi j'ai rentré ce code dans mon htaccess :

Code:
RewriteEngine on
RewriteRule ^page-(.*).php$ /page.php?cat=$1 [L]

J'ai aussi testé la règle :
Code:
^menu-(.*).php$ /menu.php?cat=$1

Mais avec celle-ci je tombe sur une erreur, il ne me trouve plus mes pages.

J'ai aussi essayé avec et sans le

Code:
Options +FollowSymlinks

Aucun changement.

J'ai testé en local sur wamp en ayant décommenté la ligne LoadModule rewrite_module modules/mod_rewrite.so et activé le rewrite module et en ligne à plusieurs reprises.

Je suis hébergé chez OVH avec un 90plan.

Si quelqu'un pouvait m'aider, cela fait déjà 3 jours que je cherche la solution en vain... :(
 
Nouveau WRInaute
Essayes ca pour voir :
Code:
RewriteEngine on 
RewriteRule ^(.*)\.php$  /page.php?cat=$1 [L]

Après je ne sais pas exactement ce qu'il faut mettre entre le ^ et le \ mais ca devrait marcher normalement ^^
 
WRInaute occasionnel
Non ça ne marche pas ça me met le message d'erreur : "Firefox a détecté que le serveur redirige la demande pour cette adresse d'une manière qui n'aboutira pas."
 
WRInaute occasionnel
Non, texto il y a marqué :

Redirection de page incorrecte

Firefox a détecté que le serveur redirige la demande pour cette adresse d'une manière qui n'aboutira pas.
 
WRInaute impliqué
j'suis pas bien fort reecriture

mais dans ton code

Code:
RewriteEngine on 
RewriteRule ^page-(.*).php$ /page.php?cat=$1 [L]

tu n'a pas échappé le point:

Code:
RewriteEngine on 
RewriteRule ^page-(.*)\.php$ /page.php?cat=$1 [L]

tu essai en local ou direct sur ton hebergement? sur un 90plan en principe ca marche...
 
WRInaute impliqué
Ripper Roo,

s'il y a une boucle (c'est ce que le message de Firefox veut dire), c'est qu'il y a plus qu'une règle de récriture.

Peux tu mettre toutes les règles de récritures de ton .htaccess et toutes les redirections (RedirectPermanent par exemple)?

Sans ça c'est impossible de t'aider.
 
WRInaute occasionnel
En fait je teste la plupart du temps en ligne mais j'ai aussi fais pas mal d'essais en local.

J'ai essayé avec l'échappement, pas d'améliorations.

Au niveau de mon code je n'ai qu'une redirection.

Voilà le site : www.dol-celeb.com

Ma règle doit s'appliquer à tous les liens des parties fantasy et médias. Du coup mon .htaccess se présente ainsi :

Code:
<Files rss.xml>
AddCharset ISO-8859-1 .xml
AddType text/xml .xml
</Files>

ErrorDocument 401 http://www.dol-celeb.com/error.php
ErrorDocument 403 http://www.dol-celeb.com/error.php
ErrorDocument 404 http://www.dol-celeb.com/error.php
ErrorDocument 500 http://www.dol-celeb.com/error.php
DirectoryIndex index.php
Options -Indexes

RewriteEngine on
RewriteRule ^page-(.*)\.php$ /page.php?cat=$1 [L]

Je n'ai donc qu'une règle et pas de RedirectPermanent. Enfin du moins c'est ce que j'avais compris à travers tutoriaux que je devais faire. Mais vu que c'est la première fois que je me penche sur les rewriting... :roll:
 
WRInaute impliqué
OK, je te suggere d'utiliser une des deux variante suivantes (met un seule des deux règles a la fois):

Code:
RewriteRule ^page-(.*)\.php$ page.php?cat=$1 [L]
RewriteRule ^page-(.*)\.php$ http://www.dol-celeb.com/page.php?cat=$1 [L]

Si ca marche toujours pas, j'irai tester en local.
 
WRInaute occasionnel
J'ai testé les deux règles en ligne. Il ne me met pas le message d'erreur mais l'adresse ne change pas.

par contre j'ai testé également en local. Pour la seconde règle c'est idem, pas contre pour la première j'ai un "Internal server Error". Pourtant comme je l'ai dis dans mon premier post j'ai configuré wamp pour le rewriting.

Je vous met le message d'erreur complet au cas où :

Code:
Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, webmaster@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.
 
WRInaute impliqué
J'ai testé la règle que tu as en local:

Code:
RewriteRule ^page-(.*)\.php$ /page.php?cat=$1 [L]

Ca marche parfaitement.

-http://localhost/page-trois.php appelle bien le contenu de -http://localhost/page.php?cat=trois

C'est bien ce que doit faire la règle. Si c'est autre chose que tu veux, alors explique le moi.

Sinon, es-tu sur que la redirection marche chez toi? As tu fais le test donné la? :
https://www.webrankinfo.com/dossiers/techniques/tutoriel-url-rewriting

As tu bien une page a cette adresse? : -http://localhost/page.php
 
WRInaute occasionnel
Ce que tu donnes comme exemple et bien ce que je veux.

J'ai bien vérifié avec le test, ça marche il n'y a pas de souci du coté de mon hébergeur.

Ensuite mon fichier page.php se trouve bien au niveau racine de mon site.


J'ai resté la règle en vain.

Pour m'assurer j'ai demandé à un ami d'essayer le script chez lui avec mes fichiers (du moins ceux qui étaient nécessaires à la manip) et bien que ça marche chez lui ça ne marche toujours pas chez moi.

J'ai alors tenté en enlevant tous les fichiers htaccess du site pour voir s'il n'y avait pas un conflit aucune changement. Mais ça reste pareil.

J'ai aussi parcouru de fond en comble le manager d'OVH pour voir s'il ne fallait pas activer une option ou quelque chose dans le genre, mais rien.

J'avoue ne plus trop savoir ou chercher. C'est incompréhensible. cela ne marcherai pas ailleurs, je comprendrai mais là...
 
WRInaute impliqué
Comment sais tu que ça ne marche pas?

Les deux adresses suivantes ont le meme contenu en tout cas:
-http://www.dol-celeb.com/page.php?cat=races
-http://www.dol-celeb.com/page-races.php

J'ai testé avec les autres catégories, et ca marche aussi...
 
WRInaute occasionnel
Effectivement l'adresse marche, mais alors pourquoi dans le navigateur, c'est toujours l'ancienne qui est marquée ? est-ce que cela viendrai alors de la config de mon navigateur ? :roll:
 
WRInaute impliqué
Ripper Roo a dit:
Effectivement l'adresse marche, mais alors pourquoi dans le navigateur, c'est toujours l'ancienne qui est marquée ? est-ce que cela viendrai alors de la config de mon navigateur ? :roll:

C'est l'ancienne car on n'a pas fait de redirection externe (vider le cache reste une bonne idée de toute façon).

Quelle adresse veut tu voir dans ton navigateur, entre les deux :

-http://www.dol-celeb.com/page.php?cat=races

ou alors

-http://www.dol-celeb.com/page-races.php
 
WRInaute impliqué
C'est normal, la regle récrit la seconde vers la premiere. Tu m'avais dit que c'était ce que tu voulais...

Bon, pour avancer, quel est le fichier php qui existe sur ton serveur? J'imagine que c'est page.php . Si c'est le cas, alors ta règle est la bonne:

Code:
RewriteRule ^page-(.*)\.php$ /page.php?cat=$1 [L]

Une adresse telle que -http://localhost/page-trois.php appelle bien le contenu de -http://localhost/page.php?cat=trois, mais l'adresse dans le navigateur reste bien -http://localhost/page-trois.php

Il faut que tu remplace tous les liens sur ton site pour utiliser les adresses sans parametre... Et c'est tout.

Maintenant, si tu veux le beurre et l'argent du beurre, c'est a dire que l'adresse soit toujours -http://localhost/page-trois.php meme si on tape l'autre, alors tu peux faire ce qui suit:

Code:
RewriteRule ^page-(.*)\.php$ /page.php?stop&cat=$1 [L] 

RewriteCond %{QUERY_STRING} ^cat=(.*)$
RewriteRule page\.php page-%1.php? [L,R=301]

Le premiere règle est la tienne avec un parametre bidon.

La deuxieme redirige l'adresse avec parametre s'il n'y a pas le parametre bidon.
 
WRInaute occasionnel
Ok j'ai bien compris le système. j'ai testé cette solution est j'obtiens toujours le même résultat. j'ai pourtant bien vider mon cache avant. xD

Sinon oui, c'est bien mon fichier page.php qui est sur le serveur au niveau racine.
 
WRInaute impliqué
Maintenant, -http://www.dol-celeb.com/page-races.php fait une erreur...

C'est pour cela que je demande...

Tu as mis quelles règles?
 
WRInaute occasionnel
Actuellement j'ai la :

Code:
RewriteRule ^page-(.*)\.php$ /page.php?stop&cat=$1 [L]

RewriteCond %{QUERY_STRING} ^cat=(.*)$
RewriteRule page\.php page-%1.php? [L,R=301]

Elle marche avec l'adresse de base http://www.dol-celeb.com/page.php?cat=race, mais pavec la réécrite comem tu as dis.

Je vais remettre la

Code:
RewriteEngine on
RewriteRule ^page-(.*)\.php$ http://www.dol-celeb.com/page.php?cat=$1 [L]

en attendant.
D'ailleurs je viens de remarquer que celle-ci marche on arrive sur la page mais il la réécris comme elle est réellement.

Edit : je serai absent jusqu'à dimanche soir donc je ne pourrai répondre et tester de nouvelles solutions qu'à ce moment là.
 
Discussions similaires
Haut