Креирање на оптимизирани линкови за пребарувачи

Programiranje Thumb

При развојот на една веб страна потребно е да се внимава на многу работи доколку сакаме да направиме квалитетен производ со кој што ќе бидат задоволни сите засегнати страни. Една од поважните работи при изработката е креирањето на оптимизирани трајни линкови за пребарувачи SEO URL-a кои носат на содржините на веб страната. Доколку веб страната што ја изработуваме е на македонски јазик, и насловите на содржините се на кирилица, а сакаме нашите трајни линкови да бидат латинични, правиме конверзија од кирилица во латиница односно транслитерација. Секако, тоа не е задолжително, дури и во последно време гледам се повеќе веб страници што користат кирилични линкови. Еднаш веќе имаме пишувано на оваа тема, од аспект на задржување на кириличните линкови, но само за пребарувачките ботови. Она за што зборувам е следното, доколку имаме наслов на некоја содржина:

Програмирањето во PHP е многу интересно, нели?

Сакаме да го конвертираме во:

programiranjeto-vo-php-e-mnogu-interesno-neli

Со што ова би го искористиле во креирањето на трајните линкови на веб страната:

http://primer.mk/index.php?p=124

во

http://primer.mk/programiranjeto-vo-php-e-mnogu-interesno-neli

Следната PHP функција го прави токму тоа:

	function searchFriendlyUrl($str){

		//Конверзија на кирилични во латинични карактери

		$englishtranslationtable = array(
			'а' => 'a',   'А' => 'a',
			'б' => 'b',   'Б' => 'b',
			'в' => 'v',   'В' => 'v',
			'г' => 'g',   'Г' => 'g',
			'д' => 'd',   'Д' => 'd',
			'ѓ' => 'gj',  'Ѓ' => 'gj',
			'е' => 'e',   'Е' => 'e',
			'ж' => 'z',   'Ж' => 'z',
			'з' => 'z',   'З' => 'z',
			'ѕ' => 'dz',  'Ѕ' => 'dz',
			'и' => 'i',   'И' => 'i',
			'ј' => 'j',   'Ј' => 'j',
			'к' => 'k',   'К' => 'k',
			'л' => 'l',   'Л' => 'l',
			'љ' => 'lj',  'Љ' => 'lj',
			'м' => 'm',   'М' => 'm',
			'н' => 'n',   'Н' => 'n',
			'њ' => 'nj',  'Њ' => 'nj',
			'о' => 'o',   'О' => 'o',
			'п' => 'p',   'П' => 'p',
			'р' => 'r',   'Р' => 'r',
			'с' => 's',   'С' => 's',
			'т' => 't',   'Т' => 't',
			'ќ' => 'k',  'Ќ' => 'k',
			'у' => 'u',   'У' => 'u',
			'ф' => 'f',   'Ф' => 'f',
			'х' => 'h',   'Х' => 'h',
			'ц' => 'c',   'Ц' => 'c',
			'ч' => 'c',  'Ч' => 'c',
			'џ' => 'dz',  'Џ' => 'dz',
			'ш' => 's',  'Ш' => 's'
		);

		// Прво ги отстрануваме сите HTML тагови
		$str = preg_replace("/<[^>]+>/", " ", $str);

		// Ги заменуваме кириличните карактери
		$str = strtr($str, $englishtranslationtable);

		// Ги отстрануваме сите несакани карактери
		$str = preg_replace("/[^a-zA-Z0-9]/", " ", $str);

		// Ги отсекуваме празните места од почетокот и крајот
                $str = trim($str);

		// Ги заменуваме последователните празни места со едно празно место
		$str = preg_replace( "/  +/", " ", $str);

		// Ги заменуваме празните места со цртичка -
		$str = str_replace(" ", "-", $str);

		// Ги правиме сите букви мали
		return strtolower($str);
	}

Пример како се користи:


echo searchFriendlyUrl("Тој „човек“ реши да испрограмира нешто во врска со тоа???");

Резултат:

toj-covek-resi-da-isprogramira-nesto-vo-vrska-so-toa

Процесирањето на ваквите линкови е веќе друга тема, и се надевам ќе пишуваме за тоа во некоја наредна прилика.

Колку ова влијае на подобро рангирање при пребарување е истотака дискутабилно, за што има дискусии на некои наши блогови.

За оние коишто користат WordPress, постои додаток за ова, но е малку застарен. Додатокот може да го најдете овде.

Информации за употребените PHP функции се разбира ќе најдете на php.net.

gravatar
Автор: Горан Митев
За авторот:

Freelance PHP програмер којшто професионално работи развој на комплексни веб апликации, CMS решенија, Е-Бизнис решенија, Wordpress. повеќе >>

3 Коментари

  1. Се изнамачив додека да подесам PHP и MySQL да ми работат со кирилични букви. Откако средив, внесување, читање и прикажување на кирилични карактери работи одлично. Ми испадна друг проблем баш со горната функција. Ако го направам следново:
    $test = “андреј”;
    echo searchFriendlyUrl($test);
    echo “” .$test;

    Charset на страната ми е UTF-8. Со break-point гледам дека вредноста на $test променливата ми се хиероглифи, затоа и конвертирањето во латиница ми враќа без врска карактери. Кога ќе и направам на $test променливата echo, се прикажува ОК. Како да го средам ова, за да работи конвертирањето?

  2. Најверојатно фајлот не ти е зачуван во UTF-8. Друг проблем не гледам. Освен тоа, кога работиш со база биди сигурен дека базата ти е ut8_general_ci а исто така и табелите.

  3. Не ми стигна мејл дека е одговорено на коментарот 🙂 Истиот ден другар ми посочи дека најверојатно до тоа е проблемот, дека фајлот треба да е зачуван како UTF-8. Тоа го реши проблемот 🙂