Přesměrování starých URL (c) Oldřich Šálek
Zjistil jsem, že mnoho lidí nemá ošetřené duplicidní url. I já mezi ně patřil. Co tím myslím? Moje pravé URL vypadá takto :
mozektevidi.net/?clanek=presmerovani-starych-url
A pomocí souboru .htaccess podstrkávám více cool adresu :
mozektevidi.net/clanek/presmerovani-starych-url
RewriteCond %{HTTP_HOST} ^mozektevidi.net
RewriteRule ^clanek/(.*)$ /?clanek=$1 [L,QSA]
RewriteRule znamená podstrčení. Jenomže co když někdo zadá původní adresu? Co se stane? Nic. Zobrazí se původní URL. Vyhledávač v tom případě vidí více adres vedoucí na jednu a tu samou stránku. Snad jsem problém vysvětlil dostatečně.
Hledal jsem odpověď na diskuze.jakpsatweb.cz, moderátoři se mi snažili poradit, leč všechny htaccessy jsem zkoušel, nefungoval ani jeden. To samé PCT fórum. Nechal jsem to být s tím, že to až tak nevadí. Když ani na webu celebrity českého internetu, pana webdesignera je stejný problém. Mluvím o webu Davida Grudla.
Abych jen neplácal vodu, uvedu příklad. Krásný článek existuje ..trine/item/s-plavackem-ve-vane i tady na ..trine?item=s-plavackem-ve-vane. Vidíte všichni ten rozdíl? Duplicidní URL. Stejnou chybu vlastnost obsahuje i nejmenovaný nejlepší redakční systém nejmenovaného
Řešení jsem hledal opravdu dlouho, jak jsem psal výše, neporadili mi na žádné diskuzi ani nikde jinde. Přitom řešení je tak jednoduché. Udělal jsem chybu, že jsem se to snažil vyřešit přes .htaccess, když to jde mnohem elegantněji přes PHP 
if (isset($_GET['clanek']))
{
$pozadovany_clanek = htmlspecialchars($_GET['clanek']); // co chce.
$pozadovana_url = htmlspecialchars($_SERVER['REQUEST_URI']); //dostanu celou relativní URL včetně případných parametrů
$cast_url = substr($pozadovana_url, 1, 1); //vytáhnu druhý znak
if ($cast_url =="?") //url s parametrem?
{
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://mozektevidi.net/clanek/$pozadovany_clanek");
header("Connection: close");
}
}
Uvedený skrip je nastavený pro můj web, jeho modifikace pro další url je snadná. Stračí nahradit clanek za item
Všimnul jsem si, že web dgx tím netrpí. Nevím jestli jsem se překouknul nebo je vlastnost opravená. Ale trpí tím např web radka hulána. Viz url: http://radekhulan.cz/?item=outlook-2007-cz-neumi-psat-czesky Omlouvám se za mystifikaci SMILL
Oldřich Šálek |
4. dubna 07, 19:04