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

Почему эта установка VirtualDocumentRoot возвращает 403 Доступ запрещен?

У меня есть настройки httpd-vhosts.conf со следующими директивами:

UseCanonicalName Off

LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
CustomLog logs/access_log vcommon

<VirtualHost 192.168.1.100:80>
VirtualDocumentRoot "E:/Web Development Projects/%3/%2.1/%2+"

DirectoryIndex  index.php index.html index.htm default.html default.htm home.html default.php home.php
</VirtualHost>

<VirtualHost 192.168.1.100:443>
SSLEngine On
SSLCertificateFile "E:/Web Development Projects/SSL/apache.crt"
SSLCertificateKeyFile "E:/Web Development Projects/SSL/apache.key"

VirtualDocumentRoot "E:/Web Development Projects/%3/%2.1/%2+"

DirectoryIndex  index.php index.html index.htm default.html default.htm home.html default.php home.php
</VirtualHost>

Но, к сожалению, мой локальный веб-сервер возвращает сообщение «403 Доступ запрещен».

Обратите внимание, что эта же конфигурация была установлена ​​на другом компьютере и работает нормально.

Что-то не так с этой настройкой?

Может кто-нибудь мне помочь?

Примечание: Моя файловая структура E:/Web Development Projects/tld/i/domain.tld/ где

  1. tld мой локальный домен верхнего уровня (dch)
  2. i это начальное доменное имя
  3. domain.tld это доменное имя проекта

Это позволяет мне иметь следующую структуру файловой системы

E:\
    Web Development Projects\
        dch\
            a\
                a-project.dch\
                    Files
                another-project.dch\
                    Files
            \z
                z-project.dch\
                    Files

ОБНОВЛЕНИЕ # 1

Я просто применил инструкции ниже, но Apache все равно не запускается.

Вот мой httpd-vhosts.conf с модификациями:

UseCanonicalName Off

LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
CustomLog logs/access_log vcommon

<VirtualHost 192.168.1.100:80>
VirtualDocumentRoot "E:/Web Development Projects/%3/%2.1/%2+"

DirectoryIndex  index.php index.html index.htm default.html default.htm home.html default.php home.php

    <Directory "E:/Web Development Projects/">
        Order deny, allow
        Require all granted
    </Directory>
</VirtualHost>

<VirtualHost 192.168.1.100:443>
SSLEngine On
SSLCertificateFile "E:/Web Development Projects/SSL/apache.crt"
SSLCertificateKeyFile "E:/Web Development Projects/SSL/apache.key"

VirtualDocumentRoot "E:/Web Development Projects/%3/%2.1/%2+"

DirectoryIndex  index.php index.html index.htm default.html default.htm home.html default.php home.php
</VirtualHost>

Но это результат сервера:

Error: Apache shutdown unexpectedly.
This may be due to a blocked port, missing dependencies, 
improper privileges, a crash, or a shutdown by another method.
Press the Logs button to view error logs and check
the Windows Event Viewer for more clues
If you need more help, copy and post this
entire log window on the forums

Любая дополнительная информация, пожалуйста?

Попробуйте добавить acl в конфигурацию Virtualhost, возможно, какая-то глобальная директива запрещает доступ:

<Directory "E:/Web Development Projects/">
Order deny, allow
Require all granted
</Directory>

Если версия apache <= 2.4, замените «Требовать все предоставлено» на «Разрешить от всех».

Надеюсь, поможет.

В интересах других у меня тоже была эта проблема, и мои решения были другими:

1) Убедитесь, что у вас нет .htaccess или включенных файлов conf из httpd.conf (или аналогичных), отменяющих любые директивы. Прокомментируйте любые include директивы, чтобы быть уверенным.

2) Вы пытаетесь обслуживать контент из своего /home каталог? Не надо. Или, если нужно, установите chmod -R +x в вашем домашнем каталоге.