Rewrite YourPHPAnnuaire, rewriting pour les recherches

Nouveau WRInaute
Bonjour,
(désolé de reposter)

Peut-être que quelqu'un en a déjà parlé mais je n'ai pas trouvé.
Il y a quelque chose qui m'échappe dans Rewrite YourPHPAnnuaire : dans le htaccess il y a bien une ligne rewriting pour les recherches

Code:
RewriteRule -k[0-9]*-([0-9]+)\.html$   /search.php?action=seek&mots=id$1&nb_results2show=20&booleen=AND [L]


Cela marche bien pour la page 1 mais pas pour les pages suivantes !
D'ailleurs dans search.php le code pour les pages suivantes est avec les variables dans les URL (donc non adapté aux URL en .html) :

Code:
echo "<a href=\"search.php?mots=".rawurlencode(htmlspecialchars($mots))."&page=".$i."&nb_results2show=".$nb_results2show."&booleen=".$booleen."&nb_sites_trouves=".$nb_sites_trouves."\">".$i."</a>\n";


Comment remédier à ça ? Quel est le code des URL rewritées pour les pages suivantes ?

De plus si je teste en tapant directement par exemple ma-recherche-k2-378.html au lieu de ma-recherche-k1-378.html (ça reste à la page 1).
Quel est le souci ?

Merci de votre aide.
 
WRInaute accro
Finalement c'était plus facile que ce que je pensais même si absolument pas optimisé.
=> http://boost.enaty.com/musee,k2,206,n36.html

En bas les liens vers les autres pages sont donc bien optimisés pour éviter un éventuel duplicate car on ne récupère pas le nombre de sites pour la 1e page qui est également affichée par le fichier qui contient les termes recherchés.

La procédure :

Dans le .htaccess ajouter :
Code:
RewriteRule -k([0-9]*)-([0-9]+)-n([0-9]*)\.html$	search.php?action=seek&mots=id$2&page=$1&nb_results2show=12&booleen=AND&nb_sites_trouves=$3 

[L]

Ouvrir search.php et trouver vers la fin :
Code:
			<?php
			for ($i=1;$i<$nb_pages;$i++)
			{
				if ($i != $page)
					echo "<a href=\"search.php?mots=".rawurlencode(htmlspecialchars($mots))."&page=".$i."&nb_results2show=".$nb_results2show."&booleen=".$booleen."&nb_sites_trouves=".$nb_sites_trouves."\">".$i."</a>\n";
				else
				{ echo "$i"; }
				echo " - ";
			}
			//on affiche le dernier numero de page (sans tiret apres)
			if ($i == $page)
				echo $i;
			else
			{ echo "<a href=\"search.php?mots=".rawurlencode(htmlspecialchars($mots))."&page=".$i."&nb_results2show=".$nb_results2show."&booleen=".$booleen."&nb_sites_trouves=".$nb_sites_trouves."\">".$i."</a>\n"; }
			?>

Remplacer par :
Code:
			<?php
$mots = isset($_REQUEST['mots']) ? $_REQUEST['mots'] : '';
if ( preg_match("/^id(\d+)$/",$mots,$id) )
{
$mots = ereg_replace("id","",$mots);
				for ($i=1;$i<$nb_pages;$i++)
			{
				if (($i != $page) && ($i == 1))
					echo "<a href=\"".rawurlencode(htmlspecialchars($keyw['keyw']))."-k".$i."-".$mots.".html\">".$i."</a>\n";
				else if (($i != $page) && ($i != 1))
					echo "<a href=\"".rawurlencode(htmlspecialchars($keyw['keyw']))."-k".$i."-".$mots."-n".$nb_sites_trouves.".html\">".$i."</a>\n";
				else
				{ echo "$i"; }
				echo " - ";
			}
			//on affiche le dernier numero de page (sans tiret apres)
			if ($i == $page)
				echo $i;
			else
			{ echo "<a href=\"".rawurlencode(htmlspecialchars($keyw['keyw']))."-k".$i."-".$mots."-n".$nb_sites_trouves.".html\">".$i."</a>\n"; }
}
else
{
				for ($i=1;$i<$nb_pages;$i++)
			{
				if ($i != $page)
					echo "<a href=\"search.php?mots=".rawurlencode(htmlspecialchars($mots))."&page=".$i."&nb_results2show=".$nb_results2show."&booleen=".$booleen."&nb_sites_trouves=".$nb_sites_trouves."\">".$i."</a>\n";
				else
				{ echo "$i"; }
				echo " - ";
			}
			//on affiche le dernier numero de page (sans tiret apres)
			if ($i == $page)
				echo $i;
			else
			{ echo "<a href=\"search.php?mots=".rawurlencode(htmlspecialchars($mots))."&page=".$i."&nb_results2show=".$nb_results2show."&booleen=".$booleen."&nb_sites_trouves=".$nb_sites_trouves."\">".$i."</a>\n"; }
};
			?>

Espérant t'avoir rendu service.
@+
 
Nouveau WRInaute
Je viens d'intégrer et ça marche !
Merci beaucoup serval2a, tu me rends bien service oui.

Par contre, je n'ai pas compris pourquoi tu pouvais optimiser les liens du top mots cles mais pas ceux des recherches elles-mêmes ?

Bonne soirée
 
WRInaute accro
Bonjour,

Tu peux mais il faut modifier totalement la page search.php seulement c'est hors le principe du top recherche tel que inséré dans RW My PHP annuaire puisque tous les mots recherchés devront être insérés dans la base pour que cela fonctionne.
Ce qui entrerai en conflit avec la fonction de bannissement de certains mots et celle limitant le nombre maximal d'entrées dans la table keyword.
En fait pour un rewriting "à la volée" des liens sur une recherche il faut modifier quasi totalement cette partie du script.
 
Discussions similaires
Haut