| Autor | Zpráva | ||
|---|---|---|---|
| lopikol Profil |
Snažím se na linux debian zprovoznit vhost.
Do defaul (hlavní nastavení) sem si přidal: UseCanonicalName Off VirtualDocumentRoot /var/www/%2+/%1 Include /etc/apache2/sites-enable/*.conf A směřuju všechny adresy, které končí na .l (petr.l, honza.l ...)na server. Pokud zadám adresu: blog.honza.l tak se pomocí Include /etc/apache2/sites-enable/*.conf načte soubor Include /etc/apache2/sites-enable/honza.conf v kterém je: <VirtualHost *:80>
DocumentRoot "/var/www/honza"
ServerName honza.l
ErrorLog "${APACHE_LOG_DIR}/error/honza-error.log"
TransferLog "${APACHE_LOG_DIR}/access/honza-access.log"
</VirtualHost>
<Directory "/var/www/honza/*">
php_admin_value open_basedir /var/www/honza:/tmp
</Directory>a zobrazí se v prohlížeči data ze složky /var/www/honza/blog/. Problém však nastane, když se zadá adresa honza.l na to se nemůžu uplatnit pravidlo: VirtualDocumentRoot /var/www/%2+/%1 Můj dotaz zní, jak udělat, aby každá složky ve složce /var/www/honza byla subdomena, tedy. /var/www/honza/blog => blog.honza.l /var/www/honza/foto => foto.honza.l /var/www/honza/data => data.honza.l a pokud uživatel přijde pouze přes honza.l, tak se zobrazí data ze složky /var/www/honza Moderátor Davex: Titulek „Nastavení virtualhostu. - pomoc“ nevystihuje podstatu dotazu. Příště zkus prosím vymyslet lepší.
|
||
| Davex Profil |
#2 · Zasláno: 31. 7. 2011, 23:52:01 · Upravil/a: Davex
Kombinuješ dohromady dva různé způsoby vytváření virtuálních hostitelů.
1) <VirtualHost> 2) VirtualDocumentRoot Ten druhý byl zamýšlen jako náhrada prvního, aby se konfigurace zjednodušila, ale vzhledem k různým omezením se obvykle používá jen ve speciálních případech (velké množství názvů v jednotné konfiguraci). > Pokud zadám adresu: blog.honza.l > > tak se pomocí Include /etc/apache2/sites-enable/*.conf načte soubor Include /etc/apache2/sites-enable/honza.conf -- > když se zadá adresa honza.l > na to se nemůžu uplatnit pravidlo: > > VirtualDocumentRoot Mělo by to fungovat přesně naopak. Na blog.honza.l zabere VirtualDocumentRoot a na honza.l se použije konfigurace z <VirtualHost>. Nikdy jsem to nekombinoval.
lopikol: „Můj dotaz zní, jak udělat, aby každá složky ve složce /var/www/honza byla subdomena, tedy.“ Použil bych pouze <VirtualHost> se ServerAlias *.honza.l a subdomény rozhazoval do adresářů pomocí pravidla mod_rewrite uvnitř sekce <VirtualHost> (viz Htaccess a různé domény).
|
||
| lopikol Profil |
#3 · Zasláno: 1. 8. 2011, 09:11:26 · Upravil/a: lopikol
Díky, ale tam je problém v tom, že složky by musely být ve tvaru a.honza.l a ne honza.l/a
Zkusil jsem to upravit na RewriteRule .* /%2/%1/$0 [L] jenže to to pak hledá ve složce s tečkou > honza.l/a. |
||
| Davex Profil |
#4 · Zasláno: 1. 8. 2011, 17:09:31
Tvůj postup byl správný, jen se v regulárním výrazu musí přesunout tečka mimo předávaný podvýraz.
RewriteCond %{ENV:REDIRECT_STATUS} =""
RewriteCond %{HTTP_HOST} ^(?:www\.)?(?:([^.]+)\.)?([^.]+\.[^.]+)$ [NC]
RewriteRule .* /%2/%1/$0 [L]Nezkoušel jsem to, snad to bude funkční i pro jméno honza.l. |
||
| lopikol Profil |
#5 · Zasláno: 1. 8. 2011, 19:23:08
Díky funguje to ;)
|
||
|
Časová prodleva: 13 dní
|
|||
| lopikol Profil |
#6 · Zasláno: 14. 8. 2011, 12:57:59
Neměl by si nějaký nápad jak na tento problém, jelikož jak jsi psal zde v tomto příspěvku, tak mi to dělá problém u nette framework.
Zde je můj .htaccess. |
||
| Davex Profil |
#7 · Zasláno: 14. 8. 2011, 21:11:52
Nevím, jaké jsou konkrétní projevy tvého problému, ale můžeš to vyzkoušet z odkomentovaným
RewriteBase /.
|
||
| lopikol Profil |
#8 · Zasláno: 14. 8. 2011, 21:30:50
Odkomentováno a nic se nezmění :(
Chyba se projeví tak, že když je url ve tvaru honza.l/php/, tak se ani nezobrazí obsah honza.l(192.168.1.1/honza.l), ale zobrazí se obsah serveru, tedy (192.168.1.1) 192.168.1.1 = 127.0.0.1 |
||
| Davex Profil |
#9 · Zasláno: 14. 8. 2011, 22:02:45
V nastavení
<VirtualHost>a zkus upravit poslední řádek podle [#4] na:
RewriteRule ^(.*)$ /%2/%1/$1 [L] |
||
| lopikol Profil |
#10 · Zasláno: 14. 8. 2011, 22:45:28
Davex:
Stejnej výsledek :( |
||
| Davex Profil |
#11 · Zasláno: 15. 8. 2011, 20:35:54
Možná je drobná chyba, že už je VirtualHost umístěn do adresáře, takže se musí ubrat první adresář v pravidle pro subdomény, ale to by ti předtím nefungovalo ([#5]). V této podobě konfigurace
<VirtualHost>u jsou pravidla v souboru /var/www/honza/php/.htaccess funkční:
<VirtualHost *:80>
DocumentRoot "/var/www/honza"
ServerName honza.l
ServerAlias *.honza.l
ErrorLog "${APACHE_LOG_DIR}/error/honza-error.log"
TransferLog "${APACHE_LOG_DIR}/access/honza-access.log"
</VirtualHost>
<Directory "/var/www/honza/">
RewriteEngine On
RewriteCond %{ENV:REDIRECT_STATUS} =""
RewriteCond %{HTTP_HOST} ^(?:www\.)?(?:([^.]+)\.)?([^.]+\.[^.]+)$ [NC]
RewriteRule ^(.*)$ /%1/$1 [L]
php_admin_value open_basedir /var/www/honza:/tmp
</Directory> |
||
| lopikol Profil |
#12 · Zasláno: 15. 8. 2011, 21:47:49 · Upravil/a: lopikol
při tomto mi nefungují subdomény :(
->zobrazí se obsah honza.l |
||
| Davex Profil |
#13 · Zasláno: 15. 8. 2011, 22:12:18
Pokud máš Nette a soubor .htaccess v adresáři /var/www/honza/honza.l/php/, tak tam musí zůstat
/%2.
RewriteRule ^(.*)$ /%2/%1/$1 [L] Nevím, v jakých adresářích soubory přesně jsou a jaká je adresářová struktura. Musíš si to upravit podle sebe. |
||
| lopikol Profil |
#14 · Zasláno: 15. 8. 2011, 22:19:23
Nette je v /var/www/honza.l/
Při tomto mi jdou hezké url, ale né subdomény <VirtualHost *:80>
DocumentRoot /var/www/honza.l/
ServerName honza.l
ServerAlias *.honza.l
ErrorLog ${APACHE_LOG_DIR}/error/honza.l-error.log
TransferLog ${APACHE_LOG_DIR}/access/honza.l-access.log
</VirtualHost>
<Directory "/var/www/honza.l/">
RewriteEngine On
RewriteCond %{ENV:REDIRECT_STATUS} =""
RewriteCond %{HTTP_HOST} ^(?:www\.)?(?:([^.]+)\.)?([^.]+\.[^.]+)$ [NC]
RewriteRule ^(.*)$ /%1/$1 [L]
php_admin_value open_basedir /var/www/honza.l:/tmp
</Directory>Jdou mi subdomény, ale né hezké url <VirtualHost *:80>
DocumentRoot /var/www/
ServerName honza.l
ServerAlias *.honza.l
ErrorLog ${APACHE_LOG_DIR}/error/honza.l-error.log
TransferLog ${APACHE_LOG_DIR}/access/honza.l-access.log
RewriteEngine On
RewriteCond %{ENV:REDIRECT_STATUS} =""
RewriteCond %{HTTP_HOST} ^(?:www\.)?(?:([^.]+)\.)?([^.]+\.[^.]+)$ [NC]
RewriteRule .* /%2/%1/$0 [L]
</VirtualHost> |
||
| Davex Profil |
#15 · Zasláno: 15. 8. 2011, 22:37:03
lopikol:
Aha, celou dobu na to koukám a nevidím. Sekce <Directory> musí být v <VirtualHost> a nikoliv za ní. Přepisovací pravidla musí být v sekci <Directory>.
<VirtualHost *:80>
DocumentRoot /var/www/
ServerName honza.l
ServerAlias *.honza.l
ErrorLog "${APACHE_LOG_DIR}/error/honza.l-error.log"
TransferLog "${APACHE_LOG_DIR}/access/honza.l-access.log"
<Directory "/var/www/">
RewriteEngine On
RewriteCond %{ENV:REDIRECT_STATUS} =""
RewriteCond %{HTTP_HOST} ^(?:www\.)?(?:([^.]+)\.)?([^.]+\.[^.]+)$ [NC]
RewriteRule ^(.*)$ /%2/%1/$1 [L]
php_admin_value open_basedir /var/www/honza.l:/tmp
</Directory>
</VirtualHost> |
||
| lopikol Profil |
#16 · Zasláno: 15. 8. 2011, 22:55:02
Přit tomto fungují subdomény. Na adrese honza.l se zobrazí obsah jak má, ale pokud je adresa honza.l/about (hezké url), tak je bílá stránka
<VirtualHost *:80>
DocumentRoot /var/www/
ServerName honza.l
ServerAlias *.honza.l
ErrorLog ${APACHE_LOG_DIR}/error/honza.l-error.log
TransferLog ${APACHE_LOG_DIR}/access/honza.l-access.log
<Directory "/var/www/">
RewriteEngine On
RewriteCond %{ENV:REDIRECT_STATUS} =""
RewriteCond %{HTTP_HOST} ^(?:www\.)?(?:([^.]+)\.)?([^.]+\.[^.]+)$ [NC]
RewriteRule ^(.*)$ /%2/%1/$1 [L]
php_admin_value open_basedir /var/www/honza.l:/tmp
</Directory>
</VirtualHost> Upravil jsem to tedy na tento tvar, ale tady jdou hezké url, ale ne subdomény <VirtualHost *:80>
DocumentRoot /var/www/honza.l/
ServerName honza.l
ServerAlias *.honza.l
ErrorLog ${APACHE_LOG_DIR}/error/honza.l-error.log
TransferLog ${APACHE_LOG_DIR}/access/honza.l-access.log
<Directory "/var/www/honza.l/">
RewriteEngine On
RewriteCond %{ENV:REDIRECT_STATUS} =""
RewriteCond %{HTTP_HOST} ^(?:www\.)?(?:([^.]+)\.)?([^.]+\.[^.]+)$ [NC]
RewriteRule ^(.*)$ /%1/$1 [L]
php_admin_value open_basedir /var/www/honza.l:/tmp
</Directory>
</VirtualHost> Já už tedy fakt nevim co to blbne :( |
||
| Davex Profil |
#17 · Zasláno: 15. 8. 2011, 23:22:52
S prvním nastavením mi funguje i přepis Cool URI a s druhým fungují i subdomény, takže se nemám čeho chytit. Je nějaká chyba v logu honza.l-error.log?
Také vyzkoušej, zda funguje přepis na jednoduchý /var/www/honza.l/index.php bez použití Nette (soubor .htaccess tam nech): <?php var_dump($_SERVER); |
||
| lopikol Profil |
#18 · Zasláno: 16. 8. 2011, 10:13:24
Používám ten první příklad
var_dump($_SERVER); array(29) { ["REDIRECT_STATUS"]=> string(3) "200" ["HTTP_HOST"]=> string(12) "honza.l" ["HTTP_USER_AGENT"]=> string(70) "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0" ["HTTP_ACCEPT"]=> string(63) "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" ["HTTP_ACCEPT_LANGUAGE"]=> string(23) "cs,en-us;q=0.7,en;q=0.3" ["HTTP_ACCEPT_ENCODING"]=> string(13) "gzip, deflate" ["HTTP_ACCEPT_CHARSET"]=> string(32) "windows-1250,utf-8;q=0.7,*;q=0.7" ["HTTP_CONNECTION"]=> string(10) "keep-alive" ["HTTP_CACHE_CONTROL"]=> string(9) "max-age=0" ["PATH"]=> string(28) "/usr/local/bin:/usr/bin:/bin" ["SERVER_SIGNATURE"]=> string(73) "
Apache/2.2.19 (Debian) Server at honza.l Port 80
" ["SERVER_SOFTWARE"]=> string(22) "Apache/2.2.19 (Debian)" ["SERVER_NAME"]=> string(12) "honza.l" ["SERVER_ADDR"]=> string(11) "192.168.0.1" ["SERVER_PORT"]=> string(2) "80" ["REMOTE_ADDR"]=> string(11) "192.168.0.4" ["DOCUMENT_ROOT"]=> string(8) "/var/www" ["SERVER_ADMIN"]=> string(18) "[no address given]" ["SCRIPT_FILENAME"]=> string(31) "/var/www/honza.l/index.php" ["REMOTE_PORT"]=> string(5) "52219" ["REDIRECT_URL"]=> string(1) "/" ["GATEWAY_INTERFACE"]=> string(7) "CGI/1.1" ["SERVER_PROTOCOL"]=> string(8) "HTTP/1.1" ["REQUEST_METHOD"]=> string(3) "GET" ["QUERY_STRING"]=> string(0) "" ["REQUEST_URI"]=> string(1) "/" ["SCRIPT_NAME"]=> string(24) "/honza.l//index.php" ["PHP_SELF"]=> string(24) "/honza.l//index.php" ["REQUEST_TIME"]=> int(1313481939) } Při zadání honza.l/about/me/ (cool uri), je v error logu: [Tue Aug 16 10:10:21 2011] [error] [client 192.168.0.4] PHP Warning: Unknown: open_basedir restriction in effect. File(/var/www/index.php) is not within the allowed path(s): (/var/www/honza.l:/tmp) in Unknown on line 0, referer: http://honza.l/ [Tue Aug 16 10:10:21 2011] [error] [client 192.168.0.4] PHP Warning: Unknown: failed to open stream: Operation not permitted in Unknown on line 0, referer: http://honza.l/ [Tue Aug 16 10:10:21 2011] [error] [client 192.168.0.4] PHP Fatal error: Unknown: Failed opening required '/var/www/index.php' (include_path='.:/usr/share/php:/usr/share/pear') in Unknown on line 0, referer: http://honza.l/ Při zadání a.honza.l/, se v error logu nic nezobrazí. Správně se ukáže obsah složky a (/var/www/honza.l/a/) Davex: „Také vyzkoušej, zda funguje přepis na jednoduchý /var/www/honza.l/index.php bez použití Nette (soubor .htaccess tam nech):“ Jak bych to měl vyzkoušet? Pokud tam nechám jen .htaccess a index.php, tak to je jako by tam nebylo nic, jelikož samo o sobě to nic neumí. |
||
| Davex Profil |
#19 · Zasláno: 16. 8. 2011, 10:56:44
Když zpátky zakomentuješ
# RewriteBase / v .htaccess, tak je to lepší nebo ho už zakomentované máš?
|
||
| lopikol Profil |
#20 · Zasláno: 16. 8. 2011, 11:13:01
Davex:
To pomůže, už to jede jak má. Díky moc za trpělivost, opravdu jsi člověk na správném místě. Jentak dál! |
||
|
Časová prodleva: 14 let
|
|||
0