Est-ce possible avec l'url rewriting ?

  • Auteur de la discussion Auteur de la discussion jexl
  • Date de début Date de début
WRInaute discret
Salut @ tous,

j'observe depuis peu cette manière de traiter les url, et je me dis que ca y est faut que je franchise le cap, je me mets donc à l'url rewriting.

Mais je me pose deux questions, pour lesquelles je n'ai pas trouver de réponses.

Aujourd'hui je sais transformer cette url :

petites-annonces.php?cat=1rubrique=2
sous le forme
petites-annonces-0-1.html

grace a cette commande :

RewriteRule ^petites-annonces-([0-9]+)-([0-9]+)\.html$
/petites-annonces/petites-annonces.php?cat=$1&rubrique=$2 [L]

et Ca marche bien

Maintenant, je me pose une question, est-il possible de faire un truc du genre :

si

si cat = 1 alors
petites-annonces.php?cat=1

se transforme en
petites-annonces-Achat.html

si cat = 2 alors
petites-annonces.php?cat=2

se transforme en
petites-annonces-Vente.html

etc etc...

Merci @ vous pour vos réponses
 
WRInaute passionné
Code:
RewriteRule ^petites-annonces-achat\.html$
/petites-annonces/petites-annonces.php?cat=1 [L]
RewriteRule ^petites-annonces-vente\.html$
/petites-annonces/petites-annonces.php?cat=2 [L]

...

mais ça peut être un peu long si tu as n entrées dans ta base.

Tu peux aussi faire uniquement

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

et dans ta page petites-annonces.php tu récupère la variable $_GET[cat] que tu compare à ta base pour "identifier" le numéro de la catégorie :

Code:
"SELECT id_cat
FROM matable
WHERE cat='".$_GET[cat]."'"
 
WRInaute passionné
jeroen a dit:
Code:
RewriteRule ^petites-annonces-achat\.html$
/petites-annonces/petites-annonces.php?cat=1 [L]
RewriteRule ^petites-annonces-vente\.html$
/petites-annonces/petites-annonces.php?cat=2 [L]

...

mais ça peut être un peu long si tu as n entrées dans ta base.

Tu peux aussi faire uniquement

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

et dans ta page petites-annonces.php tu récupère la variable $_GET[cat] que tu compare à ta base pour "identifier" le numéro de la catégorie :

Code:
"SELECT id_cat
FROM matable
WHERE cat='".$_GET[cat]."'"

+1

C'est une excellente suggestion ;-)
 
WRInaute discret
Merci jeroen pour ta réponse,

J'ai bien compris le fonctionnement de ta remière solution.

En revanche, je comprends pas trop la deuxième. Comment renvoyer a mon url le resultat de ma requete ?

Merci encore
 
WRInaute discret
Je viens de tester, et ca ne marche pas.

Voici ce qu j'ai fait :
Code:
#--------------------------------------------------
# Répertoire : /petites-annonces/
#--------------------------------------------------

# Le serveur doit suivre les liens symboliques :
Options +FollowSymlinks

# Activation du module de réécriture d'URL :
RewriteEngine on

#--------------------------------------------------
# Règles de réécriture d'URL :
#--------------------------------------------------

# Article sans numéro de page :


RewriteRule ^petites-annonces-emploi\.html$ 
petites-annonces.php?cat=1 [L]

Vous avez une idée ?

Merci d'avance.
 
WRInaute passionné
vire tout et laisse juste ça :

Code:
RewriteEngine on
RewriteRule ^petites-annonces-emploi\.html$ petites-annonces.php?cat=1 [L]
 
WRInaute discret
Voici ce que je viens de tester :

Code:
RewriteEngine on 

RewriteRule ^petites-annonces-rencontres\.html$ 
petites-annonces.php?cat=1 [L] 
RewriteRule ^petites-annonces-sorties\.html$ 
petites-annonces.php?cat=2 [L] 
RewriteRule ^petites-annonces-emploi\.html$ 
petites-annonces.php?cat=3 [L] 
RewriteRule ^petites-annonces-divers\.html$ 
petites-annonces.php?cat=4 [L]

Et rien n'y fait, toujours Internal Server Error
 
WRInaute discret
Je viens de faire tenir ca sur une seule ligne, et ca marche impec.
va comprendre Charles...

Merci @ vous, et @ plus
 
WRInaute discret
jeroen a dit:
Tu peux aussi faire uniquement

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

et dans ta page petites-annonces.php tu récupère la variable $_GET[cat] que tu compare à ta base pour "identifier" le numéro de la catégorie :

Code:
"SELECT id_cat
FROM matable
WHERE cat='".$_GET[cat]."'"

-1 :P

Bof bof niveau perf car il vaut mieux utiliser les ids pour ce genre de requêtes. Imaginez que pour Achat le SGBD va devoir tester chaque caractère de la chaîne "cat" ! Pour un id c'est très rapide car il gère un index. Vous allez me dire qu'il y en a aussi pour les caractères quand certaines options sont activées pour les champs... mais est-ce qu'on pense souvent à le faire ? Pour un moteur de recherche c'est utile mais là...

Je vous conseille de faire un benchmark et de peser le pour et le contre concernant cette méthode barbaresque... puis j'en reste à mon idée qu'il vaut mieux une belle adresse avec des ids plutôt qu'avec des chaînes complètement cryptiques. Mais je compte sur vous pour me faire changer d'avis :D
 
WRInaute discret
Salut,

Voici ce que j'ai fais qui marche à merveille :

Code:
RewriteRule ^petites-annonces-rencontres\.html$ petites-annonces.php?cat=1 [L]

tout simplement, tout sur une seule ligne.
@+
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut