Portál AbcLinuxu, 10. května 2025 05:35

Dotaz: Apache2 - nastavení různých DocumentRoot pro různé adresáře

10.3.2006 09:24 mikiael
Apache2 - nastavení různých DocumentRoot pro různé adresáře
Přečteno: 1918×
Odpovědět | Admin
Bavím se webdesignem a PHP a na svém localhostu mám rozjetý Apache. DocumentRoot jsem si nastavil na adresář Webdesign ve svém domovském adresáři. V něm mám několik dalších složek s jednotlivými projekty.

Jenže v žádném z těch projektů nemůžu používat URL ve tvaru "/neco/cosi/obrazek.gif", pouze "/jmeno_adresare_s_projektem/neco/cosi/obrazek.gif". A to mi docela vadí. Prostě bych potřeboval, aby každá z těch složek v adresáři Webdesign měla zvlášť nastavený svůj DocumentRoot. Zkoušel jsem to nastavit v konfiguráku Apache, ale ten mi to samozřejmě nedovolí, můžu nastavit DocumentRoot pouze jeden a globálně.

Začal jsem tedy studovat dokumentaci k vhostu. Podařilo se mit to nastavit, ale moc se mi to nelíbí - musel jsem si v /etc/hosts udělat něco takového :
127.0.0.1	localhost-projekt1
127.0.0.1	localhost-projekt2
127.0.0.1	localhost-projekt3
.
.
.
A pro všechny tyto hostnamy (localhost-projekt*) nastavit VirtualHost v konfiguráku Apache. Sice to funguje, ale je to trochu těžkopádné řešení, navíc musím pro každý projekt zadávat adresu ve stylu http://localhost-projekt*.

Předtím jsem to měl tak, že když jsem zadal adresu http://localhost, vypsal se mi celý adresář Webdesign a jednoduše jsem si mohl vybrat, do kterého projektu vstoupit. A přidání nového projektu bylo tak jednoduché, jako vytvoření nového adresáře ve Webdesign-u a nastavení práv.

Poradil by mi prosím někdo, jak to nastavit, aby každá ze složek ve Webdesign-u měla DocumentRoot nastavený sama na sebe ? Budu velmi vděčný. Konfiguraci Apache ovládám jen velmi zlehka... Díky
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

10.3.2006 09:47 barney
Rozbalit Rozbalit vše Re: Apache2 - nastavení různých DocumentRoot pro různé adresáře
Odpovědět | | Sbalit | Link | Blokovat | Admin
DocumentRoot je adresar, kde sa nachadzaju skripty.

skus sa zamysliet, aky je rozdiel medzi:

http://localhost/neco/cosi/obrazek.gif
http://localhost/neco/cosi/obrazek.gif
a
http://localhost/jmeno_adresare_s_projektem/neco/cosi/obrazek.gif
http://localhost/ine_jmeno_adresare_s_projektem/neco/cosi/obrazek.gif
ako sa to da:
- pouzivat virtual host (ako bolo v otazke spomenute)
- pouzivat relativne cesty
10.3.2006 09:57 mikiael
Rozbalit Rozbalit vše Re: Apache2 - nastavení různých DocumentRoot pro různé adresáře
Já chápu, jaký je mezi tím rozdíl, já jen potřebuju v každém z těch projektů používat tvar URL /neco/cosi, protože tam používám mod_rewrite.

Příklad:

Mám složku projektu, v ní je index.php a složka obrazky. Uživatel si otevře stránku index.php?jazyk=en&stranka=kontakt, jenže díky mod_rewrite je to /en/kontakt. A proto nemůžu jednoduše napsat <img src="obrazky/neco.png" />, protože prohlížeč pak hledá obrázek jako /en/kontakt/obrazky/neco.png, kterážto adresa vůbec neexistuje. Proto bych potřeboval mít <img src="/obrazky/neco.png" />
Jiří Poláček avatar 10.3.2006 10:05 Jiří Poláček | skóre: 47 | blog: naopak | Sivice
Rozbalit Rozbalit vše Re: Apache2 - nastavení různých DocumentRoot pro různé adresáře
Pak mi mohla pomoci HTML-značka <base>, když se virtuální servery zdají být tak těžkopádné.
Sudoku omrzelo? Zkuste bobblemaze! | Statistiky jsou jak bikiny. Napoví hodně, všechno ale neukážou.
10.3.2006 10:27 mikiael
Rozbalit Rozbalit vše Re: Apache2 - nastavení různých DocumentRoot pro různé adresáře
No jo, jenže tam se musí uvádět absolutní URL složky, a to je jiné na localhostu a jiné na serveru.
Jiří Poláček avatar 10.3.2006 14:42 Jiří Poláček | skóre: 47 | blog: naopak | Sivice
Rozbalit Rozbalit vše Re: Apache2 - nastavení různých DocumentRoot pro různé adresáře
Samozřejmě, ale IMHO už je to trivialita po přesunu stránek na server na jednom místě tuto hodnotu změnit. Jinak nezbývá než si hrát s virtuálními servery.
Sudoku omrzelo? Zkuste bobblemaze! | Statistiky jsou jak bikiny. Napoví hodně, všechno ale neukážou.
Jiří Poláček avatar 10.3.2006 09:58 Jiří Poláček | skóre: 47 | blog: naopak | Sivice
Rozbalit Rozbalit vše Re: Apache2 - nastavení různých DocumentRoot pro různé adresáře
Odpovědět | | Sbalit | Link | Blokovat | Admin
Od toho existují relativní odkazy:
neco/cosi/obrazek.gif
../neco/cosi/obrazek.gif
../../neco/cosi/obrazek.gif
atd. podle kontextu
Sudoku omrzelo? Zkuste bobblemaze! | Statistiky jsou jak bikiny. Napoví hodně, všechno ale neukážou.
10.3.2006 10:03 mikiael
Rozbalit Rozbalit vše Re: Apache2 - nastavení různých DocumentRoot pro různé adresáře
Jak jsem psal, používám tam mod_rewrite a pouhopuhý slash / je daleko eleganější cesta k rootu projektu, než ../../../../../ (například).
10.3.2006 10:05 mikiael
Rozbalit Rozbalit vše Re: Apache2 - nastavení různých DocumentRoot pro různé adresáře
Kromě toho pak ty stránky nahrávám na server, kde je vždy jen jeden projekt a slash jako cesta k jeho rootu funguje, takže chci mít URL stejná jak na localhostu, tak i na tom serveru.
10.3.2006 10:58 barney
Rozbalit Rozbalit vše Re: Apache2 - nastavení různých DocumentRoot pro různé adresáře
v tom pripade jedine virtual hosts
10.3.2006 11:09 mikiael
Rozbalit Rozbalit vše Re: Apache2 - nastavení různých DocumentRoot pro různé adresáře
A nejdou nastavit nějak jinak, než abych musel přidávat pro každičký projekt zvláštní zápis do /etc/hosts ? Našel jsem něco o mass virtual hosting, ale to pořád předpokládá různé hostnamy pro virtual hosty.

Pro mě by bylo ideální, kdyby Apache každou adresu ve stylu http://localhost/foo pochopil jako dotaz na virtual hosta, který má DocumentRoot /home/ja/Webdesign/foo. Ale direktiva ServerName uvnitř bloku <VirtualHost> mi dovoluje nastavit pouze klasický hostname, ne například http://localhost/abc/def.
10.3.2006 12:12 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Apache2 - nastavení různých DocumentRoot pro různé adresáře
Vypadá to, že máte velmi zkreslené představy o tom, jak HTTP (a síťová komunikace vůbec) funguje. Ten nápad, co jste teď popsal, je naprostý nesmysl.

Ale nemusíte používat name based virtuální servery, klidně můžete použít i IP based - jako adresu lokální smyčky totiž můžete použít kteroukoli adresu z rozsahu 127.0.0.0/8, nejen nejobvyklejší 127.0.0.1

10.3.2006 15:06 mikiael
Rozbalit Rozbalit vše Re: Apache2 - nastavení různých DocumentRoot pro různé adresáře
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nakonec jsem to tedy udělal pomocí VirtualHosts. Sice na to musím mít zvlášť zápis do /etc/hosts a do httpd.conf, ale funguje to přesně podle mých představ. Děkuji všem za rady a upřesnění !

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.