Search Engines - lepší servis pro Vaše čtenáře

MyEgo.cz

home foto blogy mywindows.cz kontakt

Search Engines - lepší servis pro Vaše čtenáře

Technologie 31.03.04

Stále zvyšující se počet návštěvnosti na mém blogu tvoří search engines, s tím, jak se zvyšuje počet článků, a to zejména google.com, seznam.cz a jyxo.cz.

Nicméně, jak zjišťuji z logů, občas google, seznam, či jyxo zalinkuje přímo titulní stránku blogu, tedy myego.cz. A zde je problém, čtenář totiž nehledá, typicky, titulní stránku blogu, ale něco jiného, nicméně, search engine jej poslal na titulku, protože tam, před nějakým časem, ten článek byl...

Řešení? Využít header("Location: $url");, kde parametrem URL bude ?query=hledana+slova. Čtenář, který přijde na titulku ze search engine, je tedy automaticky přesměrován na hledání těch samých slov na mém blogu.

Chcete si to vyzkoušet? Zkuste na google.com vyhledat slovo "občasný" a klikněte na první link. Ocitnete se nikoliv na myego.cz, ale na myego.cz/?query=občasný ! Přitom hledaná slova jsou kódována v UTF-8, blog v ISO-8859-2... ;)

PS: přesměrování záměrně nefunguje pro slova "hulan", "hulan.info" nebo "o'blog". Pokud někdo hledá tato slova, předpokládám, že jej zajímá právě titulní stránka blogu ;)

Již dříve jsem implementoval to, že pokud hledáte třeba "Jak na Apache", přivítá Vás na mém blogu hláška, ze kterého search engine jdete, a, navíc, hledaná slova na google, seznam, či jyxo, se přes ereg_replace zvýrazní za pomocí <span class='highhlight'>...</span>

Aby to celé fungovalo i s češtinou, napsal jsem si knihovnu AutoCzech, která sama pozná, ve kterém kódování (UTF-8, ISO-8859-2, CP1250) je hledané slovo, či slova, a převede je na (například) ISO-8859-2 používané na tomto blogu.

<?php
function codeToEncoding($code)
{
  switch ($code){
    case 'iso': return 'ISO-8859-2';
    case 'win': return 'CP1250';
    case 'asc': return 'ISO-8859-1';
    case 'utf': return 'UTF-8';
  }
  return $code;
}
function AutoCzech($str, $code)
{
 $win = array ('Á','Č','Ď','É','Ě','Í','Ň','Ó','Ř','Š','Ť','Ú','Ů','Ý','Ž','á','č','ď','é','ě','í','ň','ó','ř','š','ť','ú','ů','ý','ž');
 $iso = array ('Á','Č','Ď','É','Ě','Í','Ň','Ó','Ř','Š','Ť','Ú','Ů','Ý','Ž','á','č','ď','é','ě','í','ň','ó','ř','š','ť','ú','ů','ý','ž');
 $utf = array("xc3x81", "xc3x88", "xc3x8f", "xc3x89", "xc3x83", "xc3x8d", "xc3x92", "xc3x93", "xc3x98", "xc5xa0", "xc2x8d", "xc3x9a", "xc3x99", "xc3x9d", "xc5xbd","xc3xa1", "xc3xa8", "xc3xaf", "xc3xa9", "xc3xac", "xc3xad", "xc3xb2", "xc3xb3", "xc3xb8", "xc5xa1", "xc2x9d", "xc3xba", "xc3xb9", "xc3xbd", "xc5xbe");
 // pocty	                       
 $_win=0;
 $_iso=0;
 $_utf=0;
 // spocitam pocet vyskytu v retezci
 for ($i = 0; $i < 30; $i++){
   $_win+=substr_count($str,$win[$i]);
   $_iso+=substr_count($str,$iso[$i]);
   $_utf+=substr_count($str,$utf[$i]);
 }
 // nejvyssi vyskyt
 if ($_utf>0) return iconv('UTF-8',codeToEncoding($code),$str);
 if ($_iso>=$_win && $_iso>0) return iconv('ISO-8859-2',codeToEncoding($code),$str);
 if ($_win>=$_iso && $_win>0) return iconv('CP1250',codeToEncoding($code),$str);
 return iconv('UTF-8',codeToEncoding($code),$str);
}
?>

Knihovna autoczech.php ke stažení.