Aller au contenu

Sujets conseillés

Posté

Bonjour,

J'ai découvert l'URL rewriting hier et ca marche a 90% sur mon site de test sous EasyPHP. J'ai deux types d'URL a interpreter :

ht*p://localhost/monsite/index.php?module=page_nom

devient

ht*p://localhost/monsite/page_nom.html

Là ca marche, par contre

ht*p://localhost/monsite/index.php?module=news_details&page_name=page_nom

ne devient pas

ht*p://localhost/monsite/page_nom.html

Voici mon code :

Options +FollowSymlinks
RewriteEngine on
RewriteRule /([A-Z0-9a-z_-]+)\.html /monsite/index.php?module=$1
RewriteRule /([A-Z0-9a-z_-]+)\.html /monsite/index.php?module=news_details&page_name=$1 [L]

j'ai essayé avec des [R=301] mais les deux RewriteRule ne marchent pas ensemble, indépendemment oui. Par exemple quand je place un [R=301] sur mon premier rewrite, il me renvoie :

/monsite/index.php?module=nom_de_la_news

alors que ca devrait être

/monsite/index.php?module=news_details&page_name=nom_de_la_news

C'est là que ca coince ;-)

Désolé de mon ignorance, je ne suis que designer. Merci de votre aide en tout cas!

Posté

Bonjour,

Tu ne peux pas "faire confiance" au système pour qu'il reconnaisse de lui même que, dans certains cas, localhost/monsite/page_nom.html doit être converti d'une certaine manière et autrement dans d'autres cas. Le format que tu choisis pour tes URL doit être sans ambiguïté pour le système, sinon il prendra la première règle qui s'applique.

De plus, tu ne peux pas mettre deux règles sur la même ligne. Va voir les pages de documentation de ce site: une vraie mine d'or pour démarrer en réécriture d'URL !

Jean-Luc

Posté

Merci de ta réponse, le monde de l'URL rewriting est semé d'embûches pour un neuneu comme moi :blush:

Donc, si je suis ton raisonnement, il sera possible de faire les choses suivantes dans le meme htaccess?

localhost/monsite/page_nom.html pour localhost/monsite/index.php?module=page_nom

et

localhost/monsite/news/page_nom.html pour localhost/monsite/index.php?module=news&detail=page_nom

Merci encore

Posté

Un commentaire sur ta seconde règle toutefois...

Les répertoires apparents (l'un virtuellement dans /news/ et l'autre dans / ) étant différents, il faudra soigner tes appels aux fichiers include, javascripts, css, images, etc en :

- soit renseignant leur chemin complet

- soit utilisant la balise <base href=...> dans le fichier index.php

Sinon, le navigateur va y perdre son latin. ;)

Posté (modifié)

Merci de ta réponse Dan :rolleyes:

Mais bon, après presque trois jours à m'arracher les cheveux, ca ne marche pas. Donc les URL du site seront réécrites et pas les URL des news. Je laisse tomber parce que pas le temps. Je suis trop nul :unsure:

Quelqu'un pourrait-il me dire si l'URL suivante sera bien indexée par Google?

h*tp://www.monsite.com/index.php?module=news_details&page_name=date_nomdelanews_sujet

Merci à tous de votre aide en tout cas! :blush:

Modifié par weddy57
Posté

Faut pas se décourager si vite. :nonono:

Tu as essayé comme ceci ?

Options +FollowSymlinks
RewriteEngine on
RewriteRule /news-([A-Z0-9a-z_-]+)\.html /monsite/index.php?module=news_details&page_name=$1 [L]
RewriteRule /([A-Z0-9a-z_-]+)\.html /monsite/index.php?module=$1 [L]

N'oublie pas que l'ordre des lignes est important.

Jean-Luc

Posté

Ca marche....

En regardant de plus près, c'est simple comme bonjour... :wacko: J'avais abandonné le dossier virtuel pour un nom de fichier html différent mais pas de facon aussi simple et efficace.

Merci énormément de ton aide et d'avoir pris le temps de rédiger cette réécriture :blush: d'habitude j'arrive toujours à me débrouiller tout seul, mais là j'ai calé.

Merci merci merci!!!!

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...