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í ( :roll: ) 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 :D

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. :oops:


Pokud ti to vyhovuje a funguje, tak je to OK.