2012-06-02 3 views
11

Wampserver сообщает мне, что доступ запрещен при попытке сделать виртуальный хост вне каталога c:/wamp/www /. Я могу сделать один из них в этом каталоге. Даже создание символической ссылки на папку работает, но я бы предпочел не использовать символические ссылки. Почему это не работает?Wampserver 403 на именованных виртуальных хостах за пределами/www

Вот код, я использую в конце httpd.conf

NameVirtualHost *:80 

<VirtualHost *:80> 
DocumentRoot "c:/wamp/www" 
ServerName localhost 
ServerAlias localhost 
</VirtualHost> 

<VirtualHost *:80> 
ServerName local.cascade 
DocumentRoot c:/wamp/www/cascade/ 
</VirtualHost> 

<VirtualHost *:80> 
ServerName local.md9 
ServerAlias local.md9 
DocumentRoot "m:/Work/New MD9.ca/site/" 
</VirtualHost> 

<Directory "m:/Work/New MD9.ca/site/"> 
    Order Allow,Deny 
    Allow from All 
</Directory> 

«Каскад» В.Х. прекрасно работает.

+0

ли ваши права файловой системы позволяют доступ? – sarnold

+0

Конечно, почему бы и нет? Что нужно для разрешения? – Moss

+0

Не все системы позволяют учетной записи пользователя веб-сервера получать доступ ко всем по умолчанию. – sarnold

ответ

26

Я предполагаю, что я должен был внимательно посмотреть на http.conf. Это не так долго, в основном комментарии. Это была неприятная часть.

# Deny access to the entirety of your server's filesystem. You must 
# explicitly permit access to web content directories in other 
# <Directory> blocks below. 
# 

<Directory /> 
    AllowOverride none 
    Require all denied 
</Directory> 

Я прокомментировал это, и теперь материал работает, хотя я думаю, что он менее безопасен, но это всего лишь тестовый сервер.

Я думал, что бит <Directory "m:/Work/New MD9.ca/site/"> должен был позаботиться об этом, но я не думаю.

+0

Отличное решение! Я также нашел это здесь 'http: // reanweb.ком/WordPress/шаг шаг руководство создать виртуальную-хосты, используя-WAMP/'. В случае, если кто-то попытается найти весь процесс –

+2

@Moss, вы не беспокоитесь о безопасности, так как это тестовый сервер, но я бы упомянул для других, что вы можете оставить этот тег каталога несогласным, а другой тег каталога с путём вашей веб-папке vhost, но используйте «AllowOverride all» вместо «AllowOverride none», что оставит его безопасным, а также пригодным для использования. – Patriks

3

<Directory> тег должен находиться внутри <VirtualHost *:80>

как это:

<VirtualHost *:80> 
ServerName local.md9 
ServerAlias local.md9 
DocumentRoot "m:/Work/New MD9.ca/site/" 
    <Directory "m:/Work/New MD9.ca/site/"> 
     Order Allow,Deny 
     Allow from All 
    </Directory> 
</VirtualHost> 

также отметить, что за пределами папки в WWW по умолчанию, вы должны использовать требуют вместо позволять

<Directory /> 
    AllowOverride none 
    Require all denied 
</Directory> 
18

I знаю, что вопрос старый, и у вас есть работа, но я столкнулся с этой проблемой и решил ее, не удаляя Require all denied тег.

Вам нужно добавить к тегу Directory ярлык Require local (или Require all для доступа в Интернет). например

<VirtualHost *:80> 
    ServerName local.md9 
    ServerAlias local.md9 
    DocumentRoot "m:/Work/New MD9.ca/site/" 

    <Directory "m:/Work/New MD9.ca/site/"> 
     Order Allow,Deny 
     Allow from All 
     Require local 
    </Directory> 
</VirtualHost> 

Вы можете увидеть то же самое правило, объявленной в каталоге DocumentRoot в httpd.conf

5

Я была такая же проблема, но удалось решить после рассмотрения этого вопроса.

Однако принятый ответ может быть не лучшим решением, в зависимости от того, насколько безопасна ваша конфигурация Apache.

Я думаю, что решение должно указывать на две вещи: сначала обеспечение безопасности не будет скомпрометировано и второе; понимая разницу в конфигурации контроля доступа между версиями Apache версий 2.2 и 2.4.

Обеспечение безопасности не нарушалась

Комментирование предложенные строки:

<Directory /> 
    AllowOverride none 
    Require all denied 
</Directory> 

Средства удаления строгой безопасности по умолчанию применяется ко всем каталогам на вашем компьютере, как я понимаю. Кто-то еще может создать конфигурацию, указывающую на ваш каталог C:\very\sensitive\information и подавать контент оттуда на веб-сайт (что, скорее всего, будет проблемой на общем хосте).Интересно, что следующее замечание сделано выше этого блока:

# First, we configure the "default" to be a very restrictive set of 
# features. 

Затем под этим блоком:

# Note that from this point forward you must specifically allow 
# particular features to be enabled - so if something's not working as 
# you might expect, make sure that you have specifically enabled it 
# below. 

Это имеет полный смысл, чтобы зафиксировать все вниз, а затем условно разблокировать в каталог.

Я придумал следующее, что указывает на местоположение на моей машине, где будут жить все мои сайты (обслуживаемые через виртуальные хосты Apache). Это немедленно следует за блоком <Directory "d:/wamp/www/"></Directory>.

<Directory "d:/wamp/sites/"> 
    Options Indexes FollowSymLinks 
    AllowOverride all 
    Require all granted 
</Directory> 

Затем в каждой из ваших конфигураций/псевдонимов виртуального хоста вы можете установить конфигурацию, которая применяется к этому каталогу.

Разница в конфигурации управления доступом

Настройка контроля доступа в более поздних версиях Apache изменилось.

То, что раньше:

Order allow,deny 
Allow from all 

теперь должно быть:

Require all granted 

Для получения дополнительной информации: http://httpd.apache.org/docs/current/upgrading.html

+0

«Требовать все предоставленные» сделал трюк для меня –

1

Если вы пробовали все .conf редактирует выше, и никто не работал, попробуйте следующие дополнительные этапы:

1) Убедитесь, что DocumentRoot и < Каталог> локации - это то же самое!

2) Двойная проверка "ServerName" домен правописание в ваших VirtualHost> теги <, а также проверить правильность написания домена является то же самое в файле HOST (окна \ system32 \ Drivers \ Etc \ хостов):

Пример :

<VirtualHost *:80> 
    DocumentRoot "D:/vhost_directory/website_directory" 
    ServerName mywebsite.local 
    <Directory "D:/vhost_directory/website_directory"> 
     Options Indexes FollowSymLinks 
     AllowOverride All 
     Require all granted 
    </Directory> 
</VirtualHost> 

3) Проверьте конф файлы синтаксиса:

ошибки конф файл
cd \wamp\bin\apache\apache2.4.9\bin 
httpd -t 

4) Фикс, пока вы не получите результат:

Syntax OK 

5) Обновить кэш имени домена (необходимо запустить консоль администратора):

net stop dnscache 
net start dnscache 

6) Служба перезагрузки Apache или перезапустить все службы на WAMP