Portál AbcLinuxu, 12. května 2025 05:53

Dotaz: Apache2 - dynamické virtual hosty, jak udělat jeden defaultní?

13.4.2007 22:13 toi | skóre: 14 | Holice
Apache2 - dynamické virtual hosty, jak udělat jeden defaultní?
Přečteno: 634×
Odpovědět | Admin
Zdravím, řeším takovou maličkost, ale už si s tím nevím rady, mám Apače 2 nakonfigurovaného tak, aby dynamicky zobrazoval různé weby, podle adresy, přes kterou se na server "vleze". Mám to takto:
...
VirtualDocumentRoot /var/www/%0
...
Všechno to funguje skvěle, ale teď bych potřeboval nějak zařídit, aby se pro všechny domény, které mají svůj adresář choval Apač pořád stejně, ale pokud se na server přistoupí nějak jinak, např. přes IP adresu, tak pro tu tam adresář samozřejmě není a hodí to Chybu 404, potřeboval bych, aby to pro všechny neznámé domény i IP adresy přesměrovalo na pevně danou hostovanou doménu. Je to vůbec možné? Klidně i přes mod_rewrite. Doufám, že to z mého chaotického výkladu pochopíte a budu se těšit na vaše rady. Upozorňuju, že to nechci vyřešit pomocí symlinků, protože to nebude univerzální, díky.
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Josef Kufner avatar 13.4.2007 23:28 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Apache2 - dynamické virtual hosty, jak udělat jeden defaultní?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud nikoho nenapadne nic lepšího, tak můžeš upravit ErrorDocument 404 na php script, který to přesměrování zajistí. Není to moc složité: Zkontroluješ, jestli ten virtuál na který se snaží přistupovat existuje a pokud ne, tak ho nasměruješ kam patří (header("Location: ...");). Nezapomeň zachovat chybový kód, aby klient věděl, že je něco špatně.
Hello world ! Segmentation fault (core dumped)
14.4.2007 01:12 toi | skóre: 14 | Holice
Rozbalit Rozbalit vše Re: Apache2 - dynamické virtual hosty, jak udělat jeden defaultní?
Díky za nápad, přiznám se, že takhle by mi to stačilo, ale bohužel se mi na té chybové stránce nijak nedaří zjistit odkud jsem se na ní vlastně dostal :-( Přes referer to nejde. Nenapadá vás něco jiného?
Josef Kufner avatar 14.4.2007 04:18 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Apache2 - dynamické virtual hosty, jak udělat jeden defaultní?
Zkus tohle:
"http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']
Hello world ! Segmentation fault (core dumped)
14.4.2007 12:29 toi | skóre: 14 | Holice
Rozbalit Rozbalit vše Re: Apache2 - dynamické virtual hosty, jak udělat jeden defaultní?
To jsem zkoušel, ale vrátilo mi to název serveru a adresu té chybové stránky a ne toho zdroje.
14.4.2007 01:34 toi | skóre: 14 | Holice
Rozbalit Rozbalit vše Re: Apache2 - dynamické virtual hosty, jak udělat jeden defaultní?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Teď jsem experimentoval s mod_rewrite, funguje to skoro podle mých představ, ale potřeboval bych udělat takový regulární výraz, aby se to přepisovací pravidlo nepoužilo u těch pár domén co tam mám včetně všech jejich subdomén. V regulárních výrazech se moc neorientuju, takže kdyby mi to sem někdo napsal klidně i obecně pro 2 domény, upravím si to jak budu potřebovat a budu mu velice vděčný. Díky moc!
14.4.2007 02:17 Messa | skóre: 39 | blog: Messa
Rozbalit Rozbalit vše Re: Apache2 - dynamické virtual hosty, jak udělat jeden defaultní?
Odpovědět | | Sbalit | Link | Blokovat | Admin
If no matching virtual host is found, then the first listed virtual host that matches the IP address will be used.

A kdyby to náhodou nefunguvalo: _default_ vhost
Josef Kufner avatar 14.4.2007 04:16 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Apache2 - dynamické virtual hosty, jak udělat jeden defaultní?
Něco mi říká, že tohle s VirtualDocumentRoot nebude fungovat, ale rád bych se mýlil.
Hello world ! Segmentation fault (core dumped)
14.4.2007 06:27 Messa | skóre: 39 | blog: Messa
Rozbalit Rozbalit vše Re: Apache2 - dynamické virtual hosty, jak udělat jeden defaultní?
Mě to na Apache/2.2.3 běhá, i když to dalo trochu práci najít tu správnou kombinaci konfiguračních direktiv. Asi takhle:
NameVirtualHost *

<VirtualHost *>
	ServerName mujserver   # z nějakého důvodu musí být uvedeno
	DocumentRoot /var/www/vychozi
</VirtualHost>

<VirtualHost *>
	VirtualDocumentRoot /var/www/%0
</VirtualHost>
14.4.2007 12:34 toi | skóre: 14 | Holice
Rozbalit Rozbalit vše Re: Apache2 - dynamické virtual hosty, jak udělat jeden defaultní?
Já mám verzi 2.0.55, zkusil jsem to podle vašeho návodu, ale ať vyplním jakýkoliv název serveru, samozřejmě i s portem, dostanu stejnou chybovou hlášku
ServerName takes one argument, The hostname and port of the server
Pokud ten řádek zakomentuju, používá se ten první virtual host vždycky, bez ohledu na to, jestli tam adresář má, nebo ne :-( Nějaký nápad?

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.