Web prevádzkovaných na viac doménach súčasne
Máte zložitejšiu situáciu: vaš web je dostupný z viacerých tvarov URL. Napr. ho prevádzkujete na viacerých doménach (ten istý obsah). Prípadne máte hosting, kde podadresár v roote je automaticky doménou tretieho rádu.
Tým vám vznikajú k tej istej stránke viaceré verzie URL, čo nie je moc dobrá vec.
Môžete použiť mod-rewrite ale povedzme si, že sa ho bojíte.
Ak prevádzkujete PHP skripty, tak sa dá urobiť jednoduchý zásah a pokiaľ návštevník otvorí nežiadaný tvar URL, tak skript to spravuje a presmeruje ho na preferovaný.
Príklad:
Máme domény example.org, example.com a na ňom prevádzkujeme nejaký web v zložke s názvom forum. Je tvorený PHP skriptami: index.php, viewtopic.php a viewforum.php (áno, PHPBB).
Potom sa k jednej a tej istej stránke môže dostať návštevník pomocou adries:
http://forum.example.org/
http://forum.example.com/
http://www.example.org/forum
http://www.example.com/forum
Chceme, aby to vždy bola tá prvá verzia.
V nasledujúcom skripte urobíme zmeny podľa svojej potreby, v našom príklade sú tam hodnoty forum.example.org ako žiadaná verzia adresy.
<?php
$host=$_SERVER[„HTTP_HOST“];
if ($host == ‚forum.example.org‚) { } else
{
$request=$_SERVER[„REQUEST_URI“];
$subdir = substr($request,0,6);
if ($subdir == ‚/forum‘) { $request = substr($request,6,strlen($request)); }
$request=ereg_replace(„&src=([0-9]{1,})“,““,$request);
$request=ereg_replace(„\?src=([0-9]{1,})“,““,$request);
header(„HTTP/1.1 301 Moved permanently“);
header(„location: http://forum.example.org„.$request);
exit;
}
?>
Tučne sú vyznačené údaje, ktoré si musíte prispôsobiť podľa seba. Napr. číslo 6 je dĺžka reťazca /forum (je to 6 znakov, však?).
Tento kód vložíme na začiatok skriptov index.php, viewtopic.php a viewforum.php (v prípade PHPBB).
Analogicky môžeme použiť ľubovoľný iný PHP skript.
Tento článok je určený tým, ktorí sa venujú PHP programovaniu alebo aspoň tušia, čo uvedený príklad robí.
Nejak ti to tu v tom skripte požralo 2 rovnítka za sebou…
Pár pripomienok k skriptu:
-miesto if(podmienka){nic}else{nieco} stačí if{!podmienka){nieco}
-ten regulárny výraz sa dal spraviť naraz, a radšej by som použil preg funkcie
-zabudol si že HTTP_HOST môže byť aj IP adresa, a na zdieľanom hostingu tá adresa môže vyzerať nejak takto: http://127.0.0.1/html/example.com/public_html/forum/index.php
[1] hej, v tej prazdnej podmienke som mal este nieco, co nesuviselo s problemom :-)
IP adresu som skutocne neriesil, pretoze mi slo hlavne o domeny. Asi mas pravdu, ze v istych pripadoch sa ti moze stat, ze sa v Google ocitnu stranky s URL, kde je IP adresa.
Zozrane znaky snad zmizli, vypol som Textile pre tento clanok.