PHP: optimiser ses URL pour les moteurs de recherches
- by admin
L’optimisation pour les moteurs de recherche, appelé aussi SEO (de l’anglais Search engine optimization) est un ensemble de techniques visant à favoriser la compréhension de la thématique et du contenu d’une ou de l’ensemble des pages d’un site web par les moteurs de recherche. Ces techniques visent donc à apporter un maximum d’informations concernant le contenu d’une page web aux robots d’indexation des moteurs de recherche. Et une des premières choses à faire pour aider les robots à indexer correctements votre site est de nommé « correctement » ses urls.
- URL « pas correct »:
http://www.monsite.com/page.php?id=10&cat=2
- URL « optimisée » :
http://www.monsite.com/10-optimiser-ses-url.html
Pour réalisé celà, j’ai récupérer plusieurs fonctions à droite à gauche de la toile et voici celles que j’utilise:
[php]
// les mots à exclures
$bad_words = array(‘a’,'and’,'the’,'an’,'it’,'is’,'with’,'can’,'of’,'why’,'not’,'\ »);
// une première pour supprimers les accents
function remove_accents($str, $charset=’iso-8859-1′) {
$str = htmlentities($str, ENT_NOQUOTES, $charset);
$str = preg_replace(‘#\&([A-za-z])(?:acute|cedil|circ|grave|ring|tilde|uml)\;#’, ‘\1′, $str);
$str = preg_replace(‘#\&([A-za-z]{2})(?:lig)\;#’, ‘\1′, $str); // pour les ligatures e.g. ‘œ’
$str = preg_replace(‘#\&[^;]+\;#’, », $str); // supprime les autres caractères
return $str;
}
// une autre pour supprimer certains mots qu’on définit dans le tableau $bad_words par exemple, supprimer les mots doubles
function remove_words($input,$replace,$words_array = array(),$unique_words = true)
{
$input_array = explode(‘ ‘,$input);
$return = array();
foreach($input_array as $word)
{
if(!in_array($word,$words_array) && ($unique_words ? !in_array($word,$return) : true))
{
$return[] = $word;
}
}
return implode($replace,$return);
}
// et la fonction a appelé qui fait appel aux 2 autres
function OptimiseUrl($input,$replace = ‘-’,$remove_words = true,$words_array = array())
{
$return = remove_accents($input);
$return = trim(ereg_replace(‘ +’,’ ‘,preg_replace(‘/[^a-zA-Z0-9-\s]/’, »,strtolower($return))));
if($remove_words) { $return = remove_words($return,$replace,$words_array); }
return str_replace(‘ ‘,$replace,$return);
}
// Exemple:
//$titre = "Via Evolène";
//$titre_url = OptimiseUrl($titre,’-',true,$bad_words);
// echo $titre_url;
// résultat: via-evolene
[/php]
Ensuite un .htaccess pour rediriger les urls, et le tour est joué. Google, par exemple, ne prends même pas en charge les url en .php suivis de paramètres