Apache Headache: конфигурация виртуальных хостов

Я пытаюсь добиться следующего результата:

У меня есть несколько доменов, указывающих на один и тот же корень документа, которые содержат файлы, которые используются на всех доменах (index.php, файлы css и т. Д.):

C: / CMS /

Тогда у меня есть несколько доменов:

  • www.domain1.com/*
  • fr.domain1.com/*

Должны ли оба указывать на D: /files/domain1.com/*

  • www.domain2.com/*
  • de.domain2.com/*

Должны ли оба указывать на D:/files/domain2.com/*

тем не мение

  • www.domain1.com/adminstyle.css
  • fr.domain1.com/adminstyle.css
  • www.domain2.com/adminstyle.css
  • de.domain2.com/adminstyle.css

Должны ли все указывать на C:/cms/adminstyle.css (если файл не найден в каталоге "на домен", он должен вернуться к "общему" каталогу)

Это возможно с Apache? Я возился с виртуальными хостами / каталогами и псевдонимами, но пока безуспешно.

3 ответа

Это должно сделать это.

RewriteEngine on
RewriteCond %{REQUEST_URI} ^/adminstyle\.css$
RewriteCond %{DOCUMENT_ROOT}/adminstyle.css !-f
RewriteRule ^(.+) C:/cms/adminstyle.css [L]
RewriteRule ^(.+) - [PT]

Смотрите: http://httpd.apache.org/docs/2.2/rewrite/rewrite_guide.html

<VirtualHost *:80>
    DocumentRoot c:/cms/
    ServerName shared.domain1.com
    ServerAlias shared.domain2.com
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot c:/files/domain1.com/
    #Yes, taking liberty with the name of your domain(s) here.  Correct it if my assumptions are wrong.
    ServerName domain1.com
    ServerAlias *.domain1.com

    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule (.*) http://shared.domain1.com/$1 [L,QSA]
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot c:/files/domain2.com/
    #Yes, taking liberty with the name of your domain(s) here.  Correct it if my assumptions are wrong.
    ServerName domain2.com
    ServerAlias *.domain2.com

    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule (.*) http://shared.domain2.com/$1 [L,QSA]
</VirtualHost>

Вы могли бы сделать что-то вроде:

NameVirtualHost 1.2.3.4:80
Alias /shared D:/files/shared

<VirtualHost 1.2.3.4:80>
ServerName domain1.com
ServerAlias www.domain1.com *.domain1.com
DocumentRoot D:/files/domain1.com
</VirtualHost>

<VirtualHost 1.2.3.4:80>
ServerName domain2.com
ServerAlias www.domain2.com *.domain2.com
DocumentRoot D:/files/domain2.com
</VirtualHost>

Поместите ваши общие файлы в D:/files/shared и назовите их img src="/shared/what"

Другие вопросы по тегам