Создание SEO-дружественных URL для акцентированных символов - PullRequest
4 голосов
/ 22 июня 2010

Мы делаем наш сайт оптимизированным для SEO, следуя приведенной ниже схеме:

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

Как видите, у Гланьо есть орфографический персонаж, который поисковым системам может не понравиться. С другой стороны, мы не можем создать последний URL!

Какие-либо предложения по поддержанию нашего текущего кода генерации URL для обработки записей на испанском или французском языках, или нам нужно изменить наш подход?

Ответы [ 3 ]

6 голосов
/ 09 июля 2010

Попробуйте эти функции:

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');
}

И используйте это так:

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

Вы можете встроить код Unaccent() в функцию Slug(), если хотите иметьтолько одна функция.

4 голосов
/ 22 июня 2010

Возможно, замените акцентированные символы ближайшим соответствующим латинским не акцентированным символом.

Если "Глано" не означает что-то очень грубое, это, вероятно, ваш лучший выбор.

Если вы ищете в Google«Glaño» возвращает страницы с «Glano» в любом случае, поэтому SEO не должен быть поврежден.

Чтобы перевести символы с ударения на без ударения, вы можете использовать эту функцию (это в PHP, нонадеюсь, вы сможете использовать его в качестве отправной точки для других языков):

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);
}

(Авторский кредит переходит к allixsenos в gmail http://php.net/manual/en/function.strtr.php)

0 голосов
/ 07 июля 2010

Я согласен, что, если «Глано» не означает что-то очень грубое, это, вероятно, ваш лучший выбор.Теперь я хочу добавить, что если вы заботитесь о SEO, я бы посоветовал не иметь слишком много папок в URL.Один корень, три подпапки, а затем файл.Это может повредить больше, чем специальный символ.

...