Пожалуйста, укажите мне правильное направление.
Я использую .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