Autor Zpráva
lachim15
Profil
Zdravím, potřeboval bych poradit.

Mám například nějakou adresu: www.adresa.cz/stranka.php?f=jmeno_neceho

Potřeboval bych z hodnoty GET udělat subdoménu, která by se lišila podle toho, jaká by byla hodnota GET, například z adresy, kterou jsem uvedl výše by vzniklo:

www.jmeno_neceho.adresa.cz

Jde to udělat nějak jednoduše? Na internetu jsem našel pouze nějaké návody s Apache, který jde úplně mimo mě. Kdyby to nešlo obejít jednoduše, nenapsali by jste mi prosím obecně na co se zaměřit?
Taps
Profil
Jakym zpusobem zakladas subdomenu v soucasne dobe?
lachim15
Profil
Subdomény nezakládám, nemám s nimi žádné zkušenosti. Todle je poprvé, co je potřebuji.
aDAm
Profil
a co teda chceš dělat? jako jen přesměrovat z té adresy č.1 na adresu č.2?
lachim15
Profil
V podstatě, aby se vzhledově udělala z GET hodnoty subdoména.
Dan Charousek
Profil
Obecně se tato problematika řeší opačným způsobem. Člověk přistupuje na adresu www.neco.example.com a je mu poskytnut obsah z adresy www.example.com/stranka.php?f=neco

V kořenovém adresáři svých stránek vytvoř soubor s název .htaccess (ta tečka tam opravdu je) a do něj vlož následující kód:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} ^(.*)\.example.com$ # místo example.com napiš adresu své stránky

RewriteRule ^(.*)$ stranka.php?subdom=%1&request=$1 [QSA,L] # místo stranka.php napiš jméno souboru, na kterém se budou požadavky zpracovávat

Důležitý je i parametr request (ten si taky můžeš přepsat), který bude obsahovat vše, co uživatel zadá za lomítko:
blog.example.com/ahoj subdom parametr bude obsahovat "blog" a request parametr bude obsahovat "ahoj"
Jinak bys nemohl poskytovat různý obsah na základě různých požadavků.

Vytvořil jsem takový ukázkový příklad: code.dancharousek.cz/examples/djpw/subdom-rewrite-164858/helloWorld!
ad) V souboru stranka.php pak můžeš přistupovat k obsahu pomocí pole $_GET:
<?php
if(isset($_GET['subdom'], $_GET['request'])) {
    echo "Subdom: " . htmlspecialchars($_GET['subdom']) . "<br>";
    echo "Request:" . htmlspecialchars($_GET['request']);
}
lachim15
Profil
Ještě se chci zeptat, je nějaká možnost toto vše odzkoušet na localhostu? Doménu ještě nemám koupenou. (virtuální server Wamp)

EDIT: Možnost používání rewrite.modul mám zapnutý :)
lionel messi
Profil
lachim15:
Ještě se chci zeptat, je nějaká možnost toto vše odzkoušet na localhostu?

Áno. Skús tento návod.
lachim15
Profil
Vytvořil jsem raději čistý soubor a nějak to nefunguje, použil jsem:
<?php
if(isset($_GET['subdom'], $_GET['request'])) {
    echo "Subdom: " . htmlspecialchars($_GET['subdom']) . "<br>";
    echo "Request:" . htmlspecialchars($_GET['request']);
}
?>

.htaccess vypadá takto a je ve stejném adresáři:
RewriteEngine On
 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} (.*)\.localhost/ # místo example.com napiš adresu své stránky
 
RewriteRule ^(.*)$ service.php?subdom=%1&request=$1 [QSA,L] # místo stranka.php napiš jméno souboru, na kterém se budou požadavky zpracovávat

Jako adresu jsem zvolil:
celek.localhost/test

Je možné, že mám chybu v .htaccess při zadání adresy localhost?
rewrite modul mám zaplý i port 80 využívá wamp
Dan Charousek
Profil
lachim15:
Zkus se podívat na stackoverflow.com/questions/79764/wildcard-subdomains. Nijak jsem to nestudoval, ale řeší se tam právě otázka proměnných subdomén na localhostu.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: