Добавление VirtualHost завершается неудачно: Access Forbidden Error 403 (XAMPP) (Windows 7)


161

Я установил XAMPP на Windows 7.

Как только я добавляю VirtualHost в httpd-vhosts.conf, ОБА «обычный» http://localhostИ новый dropbox.local не работают.

Вот что я добавил к своему httpd-vhosts.conf:

<VirtualHost *:80>
    ServerAdmin postmaster@dummy-host.localhost
    DocumentRoot "E:/Documenten/Dropbox/Dropbox/dummy-htdocs"
    ServerName dropbox.local
    ServerAlias www.dropbox.local
    ErrorLog "logs/dropbox.local-error.log"
    CustomLog "logs/dropbox.local-access.log" combined
</VirtualHost>

Поэтому я посмотрел dropbox.local-error.logна любую информацию:

[Thu Feb 02 10:41:57 2012] [error] [client 127.0.0.1] client denied by server configuration: E:/Documenten/Dropbox/Dropbox/dummy-htdocs/

Эта ошибка, кажется, решается путем добавления

<directory "E:/Documenten/Dropbox/Dropbox/dummy-htdocs">
     Allow from all
</directory>

Но теперь я получаю эту ошибку в dropbox.local-error.log:

[Thu Feb 02 10:45:56 2012] [error] [client ::1] Directory index forbidden by Options directive: E:/Documenten/Dropbox/Dropbox/dummy-htdocs/

Кроме того, когда я пытаюсь получить доступ http://localhost, я не получаю никакой ошибки в обычном error.log, хотя я получаю, error 403когда я пытаюсь получить к нему доступ.

Кто-нибудь может помочь ... Это сводит меня с ума: S

РЕДАКТИРОВАТЬ: Кроме того, httpd.confесть следующее (я видел, что это упоминалось несколько раз, поэтому, прежде чем кто-то скажет):

<IfModule dir_module>
    DirectoryIndex index.php index.pl index.cgi index.asp index.shtml index.html index.htm \
                   default.php default.pl default.cgi default.asp default.shtml default.html default.htm \
                   home.php home.pl home.cgi home.asp home.shtml home.html home.htm
</IfModule>

1
Я получил ответ, но пока не могу опубликовать его :( Недостаточно репутации: /
Highmastdon

Ни один из этих ответов не работает для меня :(
Pathros

Может кто-нибудь помочь мне здесь? Я пытаюсь добиться того же самого в MAMP stackoverflow.com/q/40405663/4480164
cyber8200

Ответы:


340

Хорошо, это то, что я сделал сейчас, и это решено:

Моя httpd-vhosts.confвыглядит сейчас так:

<VirtualHost dropbox.local:80>
    DocumentRoot "E:/Documenten/Dropbox/Dropbox/dummy-htdocs"
    ServerName dropbox.local
    ErrorLog "logs/dropbox.local-error.log"
    CustomLog "logs/dropbox.local-access.log" combined
    <Directory "E:/Documenten/Dropbox/Dropbox/dummy-htdocs">
        # AllowOverride All      # Deprecated
        # Order Allow,Deny       # Deprecated
        # Allow from all         # Deprecated

        # --New way of doing it
        Require all granted    
    </Directory>
</VirtualHost>

Сначала я увидел, что необходимо установить <Directory xx:xx>параметры. Так что я положил-часть <Directory > [..] </Directory>ВНУТРИ <VirtualHost > [..] </VirtualHost>. После этого я добавил AllowOverride AuthConfig Indexesв <Directory>опции.

Теперь http://localhostтакже указывает на dropbox-virtualhost. Поэтому я добавил dropbox.localк , <VirtualHost *:80>что делает его как<VirtualHost dropbox.local:80>

НАКОНЕЦ это работает: D!

Я счастливый человек! :) :)

Я надеюсь, что кто-то еще может использовать эту информацию.


39
FWIW, я сделал то же самое, и все еще были проблемы с присоединением к моему vhost. Тем не менее, добавление Require all grantedпосле Allow from allсделал мою работу конфигурации.
Камило Диас Репка

httpd-vhosts.confЭто конфигурационный файл для Apache. Apache «запускает» php-код. Скачайте и установите xamppи измените конфигурацию, как указано выше.
Highmastdon

6
Начиная с Apache 2.4, директивы управления доступом упорядочены, разрешены, запрещены и удовлетворены . Убедитесь, что вы используете более низкую версию при использовании этих директив, или используйте Require вместо.
Паскалькулятор

4
Как говорит @Pascalculator, используйте Require all granted вместо этого . Я хочу подчеркнуть вместо этого, потому что он не работал, когда у меня были другие параметры в моей конфигурации, но когда я оставил только этот, он работал.
user2428118

1
@ davejal Большое спасибо и никаких проблем :) Я не хочу быть придурком по этому поводу. В самом деле, немного больше эквалайзера может быть неплохо здесь :)
Highmastdon

60

Для меня сработало, когда я изменил «каталог» контента на это:

<Directory  "*YourLocation*">
Options All
AllowOverride All
Require all granted  
</Directory>

Apache 2.4.3 - теперь работает с вышеприведенным дополнением, плюс у меня в панели управления «проверены» службы Apache и MySQL, из-за которых XAMPP CP перестал отвечать. Непроверенные сервисы - Apache запустился, но ошибка Access Forbidden. Добавлены вышеуказанные разрешения, и теперь это работает. Спасибо!!
Шон Кендл

2
В основном это - мне не хватало директивы Options. Options Indexes FollowSymLinksбыло все, что мне было нужно на Apache2.2, YMMV
Эд Орси

Это сработало чудесно для меня, в отличие от выбранного ответа. По какой-то причине «Требовать все предоставлено» само по себе, поскольку этот ответ предполагает, что не работало, поскольку это немедленно сломало XAMPP. Но этот ответ работал с теми между <каталог>, так что спасибо за ответ.
Скридан

Может кто-нибудь помочь мне здесь? Я пытаюсь добиться того же самого в MAMP stackoverflow.com/q/40405663/4480164
cyber8200

ТОЛЬКО Options Allработал на меня! Это недостающий ингредиент!
Теодор Р. Смит

10

Для меня (также XAMPP на Windows 7) вот что сработало:

<Directory "C:\projects\myfolder\htdocs">`
   AllowOverride All
   Require all granted
   Options Indexes FollowSymLinks
</Directory>` 

Именно эта строка вызовет 403:

Order allow,deny

.htaccess не работал, пока я не изменил ваш ответ, спасибо.
ssi-anik

когда index.html отсутствует и вы просто хотите показать все страницы в этой папке, вы можете добавить только следующее в директиву <Directory>: Require all grantedиOptions Indexes FollowSymLinks
tatskie

8

Я использую XAMPP 1.6.7 на Windows 7. Эта статья работала для меня.

Я добавил следующие строки в файл по httpd-vhosts.confадресу C:/xampp/apache/conf/extra.
Я также раскомментировал строку# NameVirtualHost *:80

<VirtualHost mysite.dev:80>
    DocumentRoot "C:/xampp/htdocs/mysite"
    ServerName mysite.dev
    ServerAlias mysite.dev
    <Directory "C:/xampp/htdocs/mysite">
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

После перезапуска Apache он все еще не работал. Затем я должен был выполнить шаг 9, упомянутый в статье, отредактировав файл C:/Windows/System32/drivers/etc/hosts.

# localhost name resolution is handled within DNS itself.
     127.0.0.1       localhost
     ::1             localhost
     127.0.0.1       mysite.dev  

Тогда я начал работать http://mysite.dev


Это действительно помогло. Огромное спасибо. ты спас мой день :)
Абхишек Гоэль

6

Спасибо, что сработало! Но я заменил это

AllowOverride AuthConfig Indexes

с этим

AllowOverride All

В противном случае .htaccess не работал: у меня возникли проблемы с RewriteEngine и появилось сообщение об ошибке «RewriteEngine здесь не разрешен».


3

Выше предложения не работали для меня. Я запустил его на своих окнах, используя вдохновение от http://butlerccwebdev.net/support/testingserver/vhosts-setup-win.html

Для Http внутри httpd-vhosts.conf

<Directory "D:/Projects">       
AllowOverride All
Require all granted
</Directory>

##Letzgrow
<VirtualHost *:80>
DocumentRoot "D:/Projects/letzgrow"
ServerName letz.dev
ServerAlias letz.dev    
</VirtualHost>

Для использования Https (Open SSL) внутри httpd-ssl.conf

<Directory "D:/Projects">       
AllowOverride All
Require all granted
</Directory>

##Letzgrow
<VirtualHost *:443>
DocumentRoot "D:/Projects/letzgrow"
ServerName letz.dev
ServerAlias letz.dev    
</VirtualHost>

Надеюсь, это поможет кому-то !!


2

После стольких изменений и попыток и ответов. Для

SO: Windows 7 / Windows 10

Версия Xampp: Xampp или Xampp portable 7.1.18 / 7.3.7 (панель управления v3.2.4)

Установщики: win32-7.1.18-0-VC14-installer / xampp-windows-x64-7.3.7-0-VC15-installer

  1. Не редактируйте другие файлы, такие как httpd-xampp

  2. Стоп Апач

  3. Открытый HTTPD-vhosts.conf находится в **your_xampp_directory**\apache\conf\extra\(директории XAMPP может быть по умолчанию: C:/xampp/htdocs)

  4. Удалите хеш перед следующей строкой (приблизительно строка 20): NameVirtualHost *:80(это может быть необязательным)

  5. Добавьте следующие виртуальные хосты в конец файла, учитывая ваши пути к каталогам:

    ##127.0.0.1
    <VirtualHost *:80>
        DocumentRoot "C:/xampp/htdocs"
        ServerName localhost
        ErrorLog "logs/localhost-error.log"
        CustomLog "logs/localhost-access.log" common
    </VirtualHost>
    
    ##127.0.0.2
    <VirtualHost *:80>
        DocumentRoot "F:/myapp/htdocs/"
        ServerName test1.localhost
        ServerAlias www.test1.localhost
        ErrorLog "logs/myapp-error.log"
        CustomLog "logs/myapp-access.log" common
        <Directory  "F:/myapp/htdocs/">
            #Options All # Deprecated
            #AllowOverride All # Deprecated
            Require all granted  
        </Directory>
    </VirtualHost>
    
  6. Отредактируйте (с правами администратора) свой файл хоста (расположенный по адресу Windows\System32\drivers\etc, но с помощью следующего совета, только один петлевой ip для каждого домена :

    127.0.0.1 localhost
    127.0.0.2 test1.localhost
    127.0.0.2 www.test1.localhost
    

Для каждого экземпляра повторите второй блок, первый является основным блоком только для целей «по умолчанию».


1
Настройка разных IP-адресов для каждого виртуального хоста работала! В отличие от WAMP, XAMP не интерпретирует каждое имя сервера, когда все они объединены в один IP-адрес (например 127.0.0.1 localhost,test1.localhost).
CPHPython

@CPHPython спасибо за упоминание различий и улучшение моего ответа. Рад помочь! Я помню, много боролся с этим вопросом
Леандро

1
спасибо, рад помочь! Прежде чем найти ваш ответ, я потратил немало времени, пытаясь выяснить, почему хосты Windows не отражают имена серверов.
CPHPython

0

Я использую xampp 1.7.3. Используя вдохновение отсюда: xampp 1.7.3 обновление сломанных виртуальных хостов запрещено

ВМЕСТО добавьте <Directory> .. </Directory>в httpd-vhosts.conf , я добавлю его в httpd.conf сразу после <Directory "D:/xampplite/cgi-bin"> .. </Directory>.

Вот что я добавляю в httpd.conf:

<Directory "D:/CofeeShop">
    AllowOverride All
    Options  All
    Order allow,deny
    Allow from all
</Directory>

И вот что я добавляю в httpd-vhosts.conf

<VirtualHost *:8001>
    ServerAdmin postmaster@dummy-host2.localhost
    DocumentRoot "D:/CofeeShop"
    ServerName localhost:8001
</VirtualHost>

Я также добавляю Listen 8001в httpd.conf, чтобы завершить настройку.

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


0

Для многих это проблема разрешения, но для меня оказывается, что ошибка была вызвана ошибкой в ​​форме, которую я пытался отправить. Чтобы быть конкретным, я случайно поставил знак «больше чем» после значения «действия». Поэтому я бы посоветовал вам еще раз взглянуть на свой код.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.