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

Apache Dynamic Virtual Host: RewriteMap: файл для карты vhost не найден

Следуя инструкциям на сайте Apache, я добавил в конец файла httpd.conf следующее:

RewriteEngine on

RewriteMap lowercase int:tolower

#define the map file
RewriteMap vhost txt:/web-data/vhost.map

# deal with aliases as above
RewriteCond %{REQUEST_URI} !^/icons/
RewriteCond %{REQUEST_URI} !^/cgi-bin/
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
# this does the file-based remap
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/httpdocs/$1

RewriteCond %{REQUEST_URI} ^/cgi-bin/
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/cgi-bin/$1 [H=cgi-script]

Когда я бегу service httpd start Я получаю следующую ошибку:

RewriteMap: file for map vhost not found:/web-data/vhost.map

Я трижды проверил, есть ли файл с разрешениями на чтение и правильно ли написано в ссылке. Что я мог упустить?

редактировать

Результаты ls -lZ на /web-data/

drwxrwsr-x. root www  unconfined_u:object_r:file_t:s0  logs
drwx------. root root system_u:object_r:file_t:s0      lost+found
-rw-r--r--. root www  unconfined_u:object_r:file_t:s0  vhost.map
drwxrwsr-x. root www  unconfined_u:object_r:file_t:s0  vhosts

Сравните вывод ls -lZ /var/www/html и ls -lZ /web-data. Кроме того, проверьте свой системный журнал, там должна быть соответствующая ошибка SELinux с подробностями.

А пока попробуйте следующее:

  1. Измените контекст /web-data соответствовать тому из /var/www/html используя chcon команда, что-то вроде:

    chcon --reference=/var/www/html /web-data

  2. Обескураженный: Вы также можете временно отключите SELinux и посмотрите, исчезнет ли ошибка