2010-06-22 6 views
3

Nous faisons notre site un site SEO-friendly en suivant le schéma ci-dessous:Building URL SEO-friendly pour les caractères accentués

http://OurWebsite.com/MyArticle/Math/Spain/Glaño

Comme vous le voyez, Glaño a un caractère d'orthographe que les moteurs de recherche ne peuvent pas J'aime ça. D'un autre côté nous ne pouvons pas construire la dernière URL!

Des suggestions pour maintenir notre code de génération d'URL actuel pour gérer les entrées espagnoles ou françaises ou nous devons changer notre approche?

+0

Voici un article connexe: http://stackoverflow.com/questions/1858426/aao-what-is-considered-more-seo-friendly-url –

+0

Voir aussi cette question: http://stackoverflow.com/questions/140549/character-set-should-i-suppose-les-encoded-characters-in-a-url-to-be-in –

Répondre

4

Peut-être remplacer les caractères accentués par le caractère latin non accentué le plus proche. Sauf si "Glano" signifie quelque chose de très grossier, c'est probablement votre meilleur pari.

Si vous recherchez google pour "Glaño", il renvoie quand même des pages avec "Glano", donc le référencement ne devrait pas être nui.

Pour traduire les caractères de accentués inaccentuée, vous pouvez utiliser cette fonction (ce qui est en PHP, mais vous seriez espérons être en mesure de l'utiliser comme point de départ pour d'autres langues):

function normalize ($string) { 
    $table = array(
     'Š'=>'S', 'š'=>'s', 'Đ'=>'Dj', 'đ'=>'dj', 'Ž'=>'Z', 'ž'=>'z', 'Č'=>'C', 'č'=>'c', 'Ć'=>'C', 'ć'=>'c', 
     'À'=>'A', 'Á'=>'A', 'Â'=>'A', 'Ã'=>'A', 'Ä'=>'A', 'Å'=>'A', 'Æ'=>'A', 'Ç'=>'C', 'È'=>'E', 'É'=>'E', 
     'Ê'=>'E', 'Ë'=>'E', 'Ì'=>'I', 'Í'=>'I', 'Î'=>'I', 'Ï'=>'I', 'Ñ'=>'N', 'Ò'=>'O', 'Ó'=>'O', 'Ô'=>'O', 
     'Õ'=>'O', 'Ö'=>'O', 'Ø'=>'O', 'Ù'=>'U', 'Ú'=>'U', 'Û'=>'U', 'Ü'=>'U', 'Ý'=>'Y', 'Þ'=>'B', 'ß'=>'Ss', 
     'à'=>'a', 'á'=>'a', 'â'=>'a', 'ã'=>'a', 'ä'=>'a', 'å'=>'a', 'æ'=>'a', 'ç'=>'c', 'è'=>'e', 'é'=>'e', 
     'ê'=>'e', 'ë'=>'e', 'ì'=>'i', 'í'=>'i', 'î'=>'i', 'ï'=>'i', 'ð'=>'o', 'ñ'=>'n', 'ò'=>'o', 'ó'=>'o', 
     'ô'=>'o', 'õ'=>'o', 'ö'=>'o', 'ø'=>'o', 'ù'=>'u', 'ú'=>'u', 'û'=>'u', 'ý'=>'y', 'ý'=>'y', 'þ'=>'b', 
     'ÿ'=>'y', 'Ŕ'=>'R', 'ŕ'=>'r', 
    ); 

    return strtr($string, $table); 
} 

(crédit auteur va allixsenos à gmailhttp://php.net/manual/en/function.strtr.php)

0

Je suis d'accord que si « Glano » signifie quelque chose de très grossier, ce qui est probablement votre meilleur pari. Maintenant, je tiens à ajouter que si vous vous souciez de SEO je considérerais ne pas avoir trop de dossiers dans l'URL. Une racine, trois sous-dossiers et ensuite le fichier. Cela peut faire plus de mal que le caractère spécial.

5

Essayez ces fonctions:

function Slug($string, $slug = '-', $extra = null) 
{ 
    return strtolower(trim(preg_replace('~[^0-9a-z' . preg_quote($extra, '~') . ']+~i', $slug, Unaccent($string)), $slug)); 
} 

function Unaccent($string) 
{ 
    return html_entity_decode(preg_replace('~&([a-z]{1,2})(?:acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i', '$1', htmlentities($string, ENT_QUOTES, 'UTF-8')), ENT_QUOTES, 'UTF-8'); 
} 

Et l'utiliser comme ceci:

echo Slug('Iñtërnâtiônàlizætiøn of Glaño'); // internationalizaetion-of-glano 

Vous pouvez intégrer le code Unaccent() dans la fonction Slug() si vous souhaitez avoir une seule fonction.

+0

Ceci est une des fonctions très intéressantes qui fonctionne sans accents hardcoding avec leurs remplacements .. existe-t-il une documentation pour cette fonction? – dynamic

Questions connexes