Version complète: sur le forum Webmaster Hub : Une règle htaccess un peu complexe
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
matoutoune
Salut à tous !

Je post car j'ai un gros problème avec mon .htaccess et l'url rewriting.
J'ai un petit moteur de recherche et certaines requètes deviennent difficiles à traduire (pour moi smile.gif)
Tant que c'était des règles simples, j'y arrivais, mais là, j'ai vraiment beaucoup de mal avec une regle plus compliquée.

Je vais avoir des liens de 2 types à rediriger :

* .monsite.com/rep/search-mot1-mot2...motn.html
vers
.monsite.com/rep/search.php?mots=mot1+mot2+...+motn

* .monsite.com/rep/search-mot1-mot2...motn_X1_X2_X3_OR.html
vers
.monsite.com/rep/search.php?mots=mot1+mot2+...+motn&page=X1&nb_results2show=X2&nb_sites_trouves=X3&booleen=OR



mot1-mot2...motn : les mots à rechercher dans le moteur.
Ils sont séparés par des "-".
A noter : les "-" se transformes en "+".

_X_X_X_OR : variables de la requête
Ils sont séparés par des "_".
X1, X2 et X3 sont donc un nombre entier.
OR : c'est un exemple mais cette variable doit pouvoir etre soit OR soit AND soit vide.

Pour le moment, je m'en tire avec ça :

RewriteRule ^search-([^-]+)\.html$ /rep/search.php?mots=$1
RewriteRule ^search-([^-]+)-([^-]+)\.html$ /rep/search.php?mots=$1+$2
RewriteRule ^search-([^-]+)-([^-]+)-([^-]+)\.html$ /rep/search.php?mots=$1+$2+$3
RewriteRule ^search-([^-]+)-([^-]+)-([^-]+)-([^-]+)\.html$ /rep/search.php?mots=$1+$2+$3+$4

Je sais, j'ai honte, c'est code tout pourri, mais je débute avec le .htaccess. Au moins, pour le moment, ça a le merite de marcher (avec toutes les requetes de moins de 5 mots biggrin.gif). Mais bon, c'est vraiment pas optimisé, comme code, surtout que ça ne marche pas du tout pour le 2eme type de requete dont j'ai besoin (avec les _X_X_X_OR). Je suis allé voir et pour tenter d'y arriver seul, mais pour le moment je tatonne encore beaucoup trôt.

Voilà !

Quelqu'un pourrait-il m'aider.
Bobe
C'est pour un moteur de recherche à priori. Quel est l'intérêt de tout cela ? Les URLs contenant des paramètres sont à bannir totalement ?
(Je sais bien que ce n'est pas le sujet mais...)
Dan
CITATION(Bobe @ dimanche 30 janvier 2005, 01h29)
C'est pour un moteur de recherche à priori. Quel est l'intérêt de tout cela ? Les URLs contenant des paramètres sont à bannir totalement ?
(Je sais bien que ce n'est pas le sujet mais...)
*

C'est la question que je me pose aussi.
La réécriture d'URLs n'est pas faite pour monter une usine à gaz wink.gif

Ne connaissant pas à l'avance le nombre de mots, il faut introduire de la récursivité qui est traitée dans l'article du Hub que tu mentionnes.
Par contre, que se passe-t-il lorsqu'un mot de la recherche comporte un trait d'union ?

Dan
matoutoune
CITATION(Dan @ dimanche 30 janvier 2005, 09h45)
C'est la question que je me pose aussi.
La réécriture d'URLs n'est pas faite pour monter une usine à gaz  wink.gif


Disons que chacun voit midi à sa porte. J'ai un réel intéret à appliquer cette règle. Si ça marche, je vous expliquerais ! wink.gif

CITATION(Dan @ dimanche 30 janvier 2005, 09h45)
Ne connaissant pas à l'avance le nombre de mots, il faut introduire de la récursivité qui est traitée dans l'article du Hub que tu mentionnes.
Par contre, que se passe-t-il lorsqu'un mot de la recherche comporte un trait d'union ?

Dan
*



Oui j'ai vu le principe de récursivité mais je n'arrive pas à comprendre encore comment l'appliquer.

Je vous jure que je ne suis pas un parvenu ou un profiteur de conseils, mais là je cale ! IMSTP5.gif J'ai juste besoin d'un petit coup de pouce pour réécrire ce paquet de règle non-optimisée et lourdes.

Merci !
Bobe
Alors.

Je te suggère de retirer le ".html" de ton URL, il n'a aucune signification et est inutile.

Et pour la réécriture:

CODE
RewriteRule ^search-(.+)$ search.php?qs=$1


(qs pour Query String)

Et de décomposer cette chaîne dans ton script php. Ce sera plus simple et souple amha.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.