Portál AbcLinuxu, 9. května 2025 23:58

Dotaz: Apache rewrite - podadresáře jako domény 3. řádu

7.10.2006 06:19 TrueFriend | skóre: 2
Apache rewrite - podadresáře jako domény 3. řádu
Přečteno: 562×
Odpovědět | Admin
Mám Apache a na něm mass virtualhosty. ty mám nastaveny jako domény 3.řádu. Problém je, že na serveru mám dvě složky: Uživatelé Firma Akce

A nevím jak udělat, aby funkce rewrite prohledala všechny tyto tři složky a pokud najde danou podpsložku, tak její obsah zobrazila.

Příklad: Ve složce Uživatelé budu mít podsložku Martin a ta se pak volá jako martin.domena.cz Stejně tak by to bylo i s ostatními složkami a podsložkami...

jde mi o to, abych měl domény třetího řádu rozdělené uživatelé od firemních věcí a dalších... Přecijen hledat několik firemních podsložek mezi stovkami podsložek nových uživatelů je občas nad lidské síly.

Myslím, že by to mělo jít funkcí Rewrite, ale nedokážu ji sepsat, aby toto uměla. Pomůže prosím někdo?
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

7.10.2006 09:01 zabza | skóre: 52 | blog: Nad_sklenkou_cerveneho
Rozbalit Rozbalit vše Re: Rewrite
Odpovědět | | Sbalit | Link | Blokovat | Admin
Můžete použít RewriteCond s -d:
'-d' (is directory)
Treats the TestString as a pathname and tests whether or not it exists, and is a directory.
8.10.2006 07:06 TrueFriend | skóre: 2
Rozbalit Rozbalit vše Rewrite
Zkusil jsem tohle, ale to také nechce fungovat. Už jsem z toho bezradný.
RewriteCond %{HTTP_HOST} (.*).domena.tld [NC]
RewriteRule ^/(.*)$ /home/web/domena.tld/uzivatele/%1/$1 [L]
RewriteRule ^/(.*)$ /home/web/domena.tld/firma/%1/$1 [L]
RewriteRule ^/(.*)$ /home/web/domena.tld/akce/%1/$1 [L]
Zkoušel jsem i ten parametr -d, ale Apache mi ho nevzal (mám verzi 2.vyšší).
8.10.2006 07:56 TrueFriend | skóre: 2
Rozbalit Rozbalit vše Re: Rewrite
Tak parametr -d mi samozřejmě funguje, ale nefunguje ta původní věc. Nějak jsem se to snažil sesmolit, ale nefunguje to... i když by asi mělo.
RewriteEngine on
RewriteBase /home/web/domena.tld/uzivatele/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ %1.domena.tld$1 [L,QSA]
RewriteBase /home/web/domena.tld/firma/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ %1.domena.tld$1 [L,QSA]
RewriteBase /home/web/domena.tld/akce/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ %1.domena.tld$1 [L,QSA]
Prosím, poraďil by někdo... Jde mi jen o to, aby pokud zadám neco.domena.tld mi to prohledalo složky uzivatele, firma, akce a pokud v některé z nich najde slozku "neco", tak ji to zobrazilo. Prosím..
8.10.2006 08:40 TrueFriend | skóre: 2
Rozbalit Rozbalit vše Re: Rewrite
Zkoušel jsem to i jednodušeji, ale také bez úspěchu... asi jsem dostatečně zatím nepochopil funkci Rewrite.
RewriteCond /home/web/domena.tld/uzivatele/%{REQUEST_FILENAME} !-d 
RewriteRule ^http://(.*) domena.tld
Nefunguje
8.10.2006 09:52 TrueFriend | skóre: 2
Rozbalit Rozbalit vše Re: Apache rewrite - podadresáře jako domény 3. řádu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tak jsem na to přišel, ale omezení je v tom, že aby šlo zadat více složek (uzivatele, firma, akce), tak se musí celé toto vícekrát zkopírovat pokaždé s jiným názvem té dané složky:
RewriteCond %{HTTP_HOST} ^([^.]+)\.domena\.tld$
RewriteCond %{1} !^www$
RewriteCond /home/web/domena.tld/uzivatele/%1 -d
RewriteCond %{REQUEST_FILENAME} !^/home/web/domena.tld/uzivatele/
RewriteRule (.*) /home/web/domena.tld/uzivatele/%1/$1 [l]
Nevěděl by tedy někdo, jak upravit tento "script" tak, aby se daly zadat na pár řádků všechny tři složky (použitím třeba nějaké direktivity) jen na pár řádků, aby se to celé nemuselo kopírovat?
8.10.2006 10:18 Honza
Rozbalit Rozbalit vše Re: Apache rewrite - podadresáře jako domény 3. řádu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ahoj

pokud by neslo pouzit toto:

UseCanonicalName off

VirtualDocumentRoot /var/www/domena.tld/%-3

tak uplne nejjednodussi reseni mi prijde mit firmy a uzivatele dohromady a na ty firmy si do toho adresare firmy udelat linky.

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.