Stránka 1 z 1
dynamické subdomény (mod rewrite)
Napsal: pon 13. črc 2009, 01:14
od NEONET
Zdravim, mam tu problem, potrebuju udelat dynamicke subdomeny a to tak, ze kdyz napisu treba ahoj.domena.cz tak mod rewrite zkontroluje existenci slozky ahoj ve var/www/test a kdyz tam je tak zobrazi jeji obsah...
dale kdyz dam jenom domena.cz a nebo
www.domena.cz tak aby to koncilo v pevne dane slozce... vice viz SPATNY script,
pomuze nekdo prosim odhalit chyby a dokoncit to?
Kód: Vybrat vše
<virtualhost *:80>
ServerName *.domena.cz
ServerAlias www.*.domena.cz
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.* [NC]
RewriteCond %{HTTP_HOST} ^([^\.]+)\.domena\.cz
RewriteCond /var/www/test/$1 -d
RewriteRule ^(.*) /var/www/test/%1/$1 [L]
RewriteCond %{HTTP_HOST} domena.cz [NC,OR]
RewriteCond %{HTTP_HOST} www.domena.cz [NC]
RewriteRule ^(.*) /var/www/test/hlavni [L]
CustomLog /var/log/apache2/anycust.log combined
ErrorLog /var/log/apache2/anyerror.log
</virtualhost>
Re: dynamické subdomény (mod rewrite)
Napsal: úte 14. črc 2009, 18:50
od OndraSter
Já to řeším jinak, a to pomocí mod_vhost_alias.
Mám pevně danou strukturu hledání rootu webu:
/disk2/http/<domena>/<subdomena>/
První a jediný problém byl, když není zadáno www. a tudíž to nemá kde vyhledat subdoménu. To jsem vyřešil jednoduchým trikem: pokud mod_rewrite zjistí, že nejsou v adrese alespoň dvě tečky, tak přesměruje z
http://neco.cz na
http://www.neco.cz a tudíž subdoména je www a vše funguje. Sice to není asi nejlepší řešení, ale je 100% funkční.
Co ty na to?
Re: dynamické subdomény (mod rewrite)
Napsal: úte 14. črc 2009, 20:24
od NEONET
libi se mi to, ale s mod_vhost_alias sem si hral a na nic jsem eprisel

Re: dynamické subdomény (mod rewrite)
Napsal: úte 14. črc 2009, 20:38
od OndraSter
Jestli by ti to vyhovovalo, tak se to pokusím popsat, ač se to popisuje blbě a lepší to je pochopit:
Kód: Vybrat vše
UseCanonicalName Off
VirtualDocumentRoot /disk2/http/%2+/%1
----- toto nastaví správně, kde to má hledat
Include /etc/apache2/domains.d/*.conf
----- vysvětlím později
<Directory "/disk2/http/*">
Order deny,allow
allow from all
Options -Indexes
IndexOptions FancyIndexing
php_admin_value open_basedir /disk2/http/:/tmp
</Directory>
---- vypnu indexování složek a pro bezpečnost (pokud by došlo k problému) tak nepustím ani za nic skript výš jak /disk2/http/ (další info dále)
RewriteEngine On
RewriteCond %{HTTP_HOST} ^[^\./]+\.[^\./]+$
RewriteRule ^/(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
------- a tento kousek přesměruje, pokud není specifikovaná subdoména, na www.
A teď přichází další část:
Jelikož nejde nastavit open_basedir automaticky, jako v případě virtual document root, musí se na to ručně. Proto tam je ten řádek
Kód: Vybrat vše
Include /etc/apache2/domains.d/*.conf
V /etc/apache2/domains.d mám soubory ve formátu:
<domena>.<tld>.conf - pro každou doménu vlastní, můžu tudíž každému klientovi povolovat různé věci a naopak jiné zakazovat.
Ukázkový příklad jednoho .conf:
Kód: Vybrat vše
<Directory "/disk2/http/ondraster.cz/*">
php_admin_value open_basedir /disk2/http/ondraster.cz:/tmp
</Directory>
Pro doménu ondraster.cz mám nastavený open_basedir jen po root vlastního webu a /tmp (pro upload souborů)
V případě nejasností (

) se klidně ptej.
Re: dynamické subdomény (mod rewrite)
Napsal: stř 22. črc 2009, 00:23
od NEONET
tak jsem zkousel tvou metodu, ale pokazde mi to konci na 404...

Re: dynamické subdomény (mod rewrite)
Napsal: stř 22. črc 2009, 00:24
od OndraSter
A máš správně nastavené cesty?
Re: dynamické subdomény (mod rewrite)
Napsal: stř 22. črc 2009, 00:30
od NEONET
sesty jsem si nastavil svoje a ano, spravne, az na to tmp tm si nejsem jist ale na upload ted kaslu
Re: dynamické subdomény (mod rewrite)
Napsal: stř 22. črc 2009, 04:31
od NEONET
uz jsem to nejak rozchodil, ale potrebuju jenom kontrolu
v httpd.conf mam toto
Kód: Vybrat vše
<VirtualHost *:80>
UseCanonicalName Off
VirtualDocumentRoot /var/www/%2+/%1
Include /etc/apache2/domains.d/*.conf
<Directory "/var/www/*">
Order deny,allow
allow from all
Options -Indexes
IndexOptions FancyIndexing
php_admin_value open_basedir /var/www/:/var/tmp
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^[^\./]+\.[^\./]+$
RewriteRule ^/(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
</VirtualHost>
a pak v domains.d sem vytvoril neonets.eu.conf a do ni narval toto
Kód: Vybrat vše
<Directory "/var/www/neonets.eu/*">
php_admin_value open_basedir /var/www/neonets.eu:/var/tmp
</Directory>
a pak jenom vytvoril slozky jak jsou...
akorat pouzivam i porad jeste byvale zapisy pro kazdou domenu zvlast, treba kvuli phpsysinfu a jine domene ktera nebude mit sub... funguje to, ale pls ondro kontrola

Re: dynamické subdomény (mod rewrite)
Napsal: stř 22. črc 2009, 08:22
od OndraSter
nelibi si mi tam to, jak mas prazdne "php_admin_value" - nechapu toho smysl, normalne to nastavuje promenne php, napr zakazuje funkce atd (ja pouzivam suhosin patch).
Re: dynamické subdomény (mod rewrite)
Napsal: stř 22. črc 2009, 08:43
od NEONET
myslis u cgi a doc?
Re: dynamické subdomény (mod rewrite)
Napsal: stř 22. črc 2009, 08:59
od OndraSter
Je pardon, mobil (mobilní IE) mi to nějak špatně zalomil a schoval mi cokoliv za tím, omlouvám se. Na PC to už vidím vše.
Pokud ti to vyhovuje a funguje, tak je to OK.