Назад | Перейти на главную страницу

переписать apache для назначения папок доменам

Пожалуйста, укажите мне правильное направление.

Я использую .htaccess для настройки доменов на моем сервере.

Мне нужно на domain.com для доступа к файлам из папки /domain.com/*. Если файл не существует, загрузите /domain.com/index.php, а domain.com/images/image.jpg должен загрузить файл: /domain.com/images/image.jpg

Во-первых, он должен загружать все, не отправляя в браузер 302 уведомления о перемещении файла.

Спасибо за вашу помощь!

Если у вас много доменов или даже если у вас всего несколько доменов, но все они имеют более или менее одинаковую конфигурацию, это такая ситуация, когда динамический массовый виртуальный хостинг создан для. Что-то вроде этого войдет в ваш httpd.conf файл (или в файле, включенном в httpd.conf):

UseCanonicalName Off
VirtualDocumentRoot /var/www/%0/htdocs
ErrorLog /var/www/logs/error_log
CustomLog /var/www/logs/access_log combined

Я бы также предложил

DirectoryIndex index.php

загрузить index.php файл в каталоге, если клиент не указывает имя файла.

Вы должны создать виртуальный хост для каждого отдельного домена, который вы хотите сопоставить с путем к файлу, и указать DocumentRoot каждого виртуального хоста для фактического пути в файловой системе. Затем вам нужно убедиться, что у вас есть виртуальный хост DEFAULT, чтобы все остальные запросы для доменов, которые не были настроены, использовали виртуальный хост DEFAULT. Наконец, вы захотите создать собственный обработчик ошибок 404, чтобы, если запрашиваемый файл не существует, он обслуживал альтернативный контент. Вам нужно будет создать php с именем custom_404.php, который отображает общее сообщение и ваш /images/image.png.

# Default Domain (Undefined domains will fall back to this)
<VirtualHost *:80>
    ServerAlias www.defaultdomain.com
    DocumentRoot /var/www/default/htdocs
    ErrorDocument 404 /custom_404.php
    ErrorLog /var/www/default/logs/error_log
    CustomLog /var/www/default/logs/access_log combined
</VirtualHost>

# domain1.com
<VirtualHost *:80>
    ServerName domain1.com
    ServerAlias www.domain1.com
    DocumentRoot /var/www/domain1.com/htdocs
    ErrorDocument 404 /custom_404.php
    ErrorLog /var/www/domain1.com/logs/error_log
    CustomLog /var/www/domain1.com/logs/access_log combined
</VirtualHost>

# domain2.com
<VirtualHost *:80>
    ServerName domain2.com
    ServerAlias www.domain2.com
    DocumentRoot /var/www/domain2.com/htdocs
    ErrorDocument 404 /custom_404.php
    ErrorLog /var/www/domain2.com/logs/error_log
    CustomLog /var/www/domain2.com/logs/access_log combined
</VirtualHost>

Надеюсь это поможет!

-Кевин

Для этого вам нужно использовать виртуальные хосты. Вот пример файла виртуального хоста.

<VirtualHost *:80>
    ServerName example.net
    ServerAlias www.example.net
    ServerAdmin traustitj@example.com
    DocumentRoot /var/www/vhosts/www.example.net/html
    ErrorLog /var/www/vhosts/www.example.net/logs/errors.log
    Customlog /var/www/vhosts/www.example.net/logs/access.log combined

</VirtualHost>

Поместите этот файл в /etc/httpd/conf.d/ и назовите его, например, vhost_example.net.conf

А затем добавьте внутрь /etc/httpd/conf/httpd.conf, например, последнюю строку

Включите /etc/httpd/conf.d/vhost_example.net.conf

(или просто включите /etc/httpd/conf.d/*.conf) И в файле httpd.conf не забудьте сделать эту строку раскомментированной

ИмяVirtualHost *: 80