LINUX.ORG.RU
ФорумAdmin

VirtualDocumentRoot и домены вида domain.com


0

0

Apache/2.0.54. Цель - динамические виртуальные хосты: при создании папки, автоматически создается субдомен.

В конфиге: VirtualDocumentRoot /var/www/%1
Т.е., test.domain.com берется из /var/www/test/, www.domain.com - из /var/www/www/. Но как быть с domain.com? Он, по идее, берется из /var/www/, что крайне нежелательно.

Каким образом можно заставить апач лезть в /var/www/www/ при запросах типа http://domain.com?


кошернее сделать при помощи mod_rewrite, в URL Rewriting Guide есть пример, но он корявый, к вечеру нормальный напишу

borisych ★★★★★
()

в твоем случае для domain.com сделай отдельный VirtualHost


вот тебе пример для mod_rewrite:

httpd.conf:

<VirtualHost *>
ServerName domain.tld
ServerAlias *.domain.tld
DocumentRoot "/var/www/domain.tld"
</VirtualHost>

в .htaccess в /var/www/domain.tld
RewriteEngine On
RewriteCond %{HTTP_HOST} ^.+\.domain\.tld$
RewriteCond %{HTTP_HOST} !^www\.domain\.tld$
RewriteRule ^(.+) %{HTTP_HOST} [C]
RewriteRule ^(.+)\.domain\.tld /$1%{REQUEST_URI} [L]

и соответственно в /var/www/domain.tld/<prefix> в .htaccess
придется делать RewriteEngine Off, по этой же причине не получится
разместить <prefix> до DocumentRoot от domain.tld

borisych ★★★★★
()
Ответ на: комментарий от borisych

Собственно, окончательно сделал так:

<VirtualHost 199.9.99.199>
ServerName www.site.net.ru
ServerAlias site.net.ru *.site.net.ru
ServerSignature Off
RewriteEngine on
RewriteCond %{HTTP_HOST} ^site.net\.ru [NC]
RewriteRule ^/(.*) http://www.site.net.ru/$1 [L,R]
VirtualDocumentRoot /var/www/%-4
VirtualScriptAlias /var/www/%-4/cgi-bin
ErrorLog /var/www/logs/error.log
CustomLog /var/www/logs/access.log combined
ServerSignature On
Options FollowSymLinks Includes MultiViews ExecCGI
AddHandler cgi-script .cgi
UseCanonicalName Off
</VirtualHost>

WinZ
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.