Pred tedni je bila vpeljana skripta, ki spremeni zapis URLja tako ,da so v njem zajete ključne besede (naslov oglasa).
Bivši URL: http://www.podarimo.si/index.php?page=item&id=11309
Nov URL: http://www.podarimo.si/11309-monitor
Preko obeh URLjev je stran dostopna, le da sama stran Podarimo.si nima več linkov, ki bi kazali na stare URLje temveč le na nove.
Googlu pa se je zmešalo. Kar naenkrat mi začne v Webmaster tools opozarjati na številne strani "not found". Linkov do teh strani na sami strani ni.
Starim URLjem namreč dodaja /</ in URL izgleda takole:
http://www.podarimo.si/</index.php?page=item&id=11309
Seveda stran ne obstaja, kar Google zazna.
Vendar to ni vse. Forumu v URL doda še eno mapo /forum/, nekaterim stranem pa vrine kar /index.php/ . Vse te strani potem niso dosegljive.
Zadevo sem skušal rešiti z robots.txt, kjer sem prepovedal indeksiranje /index.php/, /forum/ ter /</ in /</ (oboje je isto). Google je tako našel v parih dneh 76143 strani "URLs restricted by robots.txt". Vseeno pa ne upošteva prepovedi /</ oziroma /</ , kot kaže zapisa ne prepozna. Tako je našel 2750 strani, ki ne obstajajo.
Skripta, ki preimenuje URLje:
/*
* Povezave se generirajo takole:
* Na začetku se vpiše ID oglasa, nato sledi vezaj,
* nato pa se s spodnjo funkcijo stringToUrl obdela naslov oglasa.
*/
$povezava_rewrite = $vrstica['id'] . "-" . stringToUrl($vrstica['naslov']);
/* Funkcija stringToUrl(). */
function stringToUrl($name) {
$before = array("Š", "Đ", "Č", "Ć", "Ž", "š", "đ", "č", "ć", "ž", " ", ".", ",", "\"", "'", "&", "(", ")", "š", "d", "c", "c", "ž", "ö", "Š", "?", "C", "C", "Ž", "Ö", "/", ":", "!");
$after = array("S", "D", "C", "C", "Z", "s", "d", "c", "c", "z", "-", "", "", "", "", "", "", "", "s", "d", "c", "c", "z", "o", "S", "D", "C", "C", "Z", "O", "-", "", "");
$name = strreplace($before, $after, $name);
$name = urlencode($name);
$name = strreplace("%", "", $name);
$name = strtolower($name);
return $name;
}
/*
Ko na tak način dobimo lepe URLje, je treba strežnik nastaviti, da ob zahtevku v stilu
podarimo.si/12530-mosko-kolo pokliče skripto index.php?page=item&id=12530.
To pretvorbo nastaviš v .htaccess datoteki v ustrezni mapi na strežniku.
Pravilo, ki ga uporabljava, izgleda takole:
*/
RewriteRule ^([0-9]+)-.*$ index.php?page=item&id=$1
Se komu sanja, v čem je problem, da Google najde te URL-je, in kako mu prepovedati indeksavijo /</ map, ki ne obstajajo?