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í.

2 odpovede na Web prevádzkovaných na viac doménach súčasne

  1. tiso povedal:

    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

  2. rony povedal:

    [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.