Dodanie VirtualHost nie powiodło się: Błąd dostępu zabroniony 403 (XAMPP) (Windows 7)


161

Mam instalację XAMPP działającą w systemie Windows 7.

Jak tylko dodam VirtualHost do httpd-vhosts.conf, ZARÓWNO „zwykły”, jak http://localhosti nowy dropbox.local nie działają.

Oto, co dodałem do mojego 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>

Poszukałem więc dropbox.local-error.loginformacji:

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

Wydaje się, że ten błąd można rozwiązać, dodając

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

Ale teraz otrzymuję ten błąd w 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/

Ponadto, kiedy próbuję uzyskać dostęp http://localhost, nie pojawia się żaden błąd w zwykłym error.log, chociaż error 403pojawia się, gdy próbuję uzyskać do niego dostęp.

Czy ktoś może pomóc ... Doprowadza mnie to do szału: S.

EDYCJA: httpd.confJest tam również (widziałem to wielokrotnie, więc zanim ktokolwiek to powie):

<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
Otrzymałem odpowiedź, ale nie mogę jej jeszcze opublikować :( Niewystarczająca reputacja: /
Highmastdon,

Żadna z tych odpowiedzi nie działa dla mnie :(
Pathros

Czy ktoś może mi tutaj pomóc? Próbuję osiągnąć to samo w
MAMP

Odpowiedzi:


340

Okay: To jest to, co zrobiłem teraz i jest rozwiązane:

Mój httpd-vhosts.confwygląd wygląda teraz tak:

<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>

Najpierw zobaczyłem, że konieczne jest ustawienie <Directory xx:xx>opcji. Więc umieściłem <Directory > [..] </Directory>-część WEWNĄTRZ <VirtualHost > [..] </VirtualHost>. Następnie dodałem AllowOverride AuthConfig Indexesdo <Directory>opcji.

Teraz http://localhostwskazuje również na dropbox-virtualhost. Dodałem więc, dropbox.localdo <VirtualHost *:80>czego robi to jako<VirtualHost dropbox.local:80>

WRESZCIE to działa: D!

Jestem szczęśliwym człowiekiem! :) :)

Mam nadzieję, że ktoś inny może wykorzystać te informacje.


39
FWIW, zrobiłem to samo i nadal miałem problemy z dostępem do mojego vhosta. Jednak dodanie Require all grantedpo Allow from allsprawiło, że moja konfiguracja zadziałała.
Camilo Díaz Repka

To httpd-vhosts.confjest plik konfiguracyjny dla Apache. Apache „uruchamia” kod php. Pobierz, zainstaluj xamppi zmień konfigurację zgodnie z powyższym opisem.
Highmastdon,

6
Począwszy od Apache 2.4 dyrektywy kontroli dostępu , zezwalaj, odmawiaj i spełnij są przestarzałe . Upewnij się, że korzystasz z niższej wersji, gdy używasz tych dyrektyw, lub zamiast nich użyj Wymagaj.
Pascalculator

4
Jak mówi @Pascalculator, użyj Require all granted zamiast tego . Chcę podkreślić zamiast tego, ponieważ nie działało, gdy miałem inne opcje w mojej konfiguracji, ale kiedy zostawiłem tylko tę, zadziałało.
user2428118

1
@davejal Wielkie dzięki i nie ma problemu :) Nie chcę z tego powodu być palantem. Rzeczywiście, trochę więcej EQ mogłoby tu być fajne :)
Highmastdon

60

U mnie działało, gdy zmieniłem zawartość „katalogu” na następującą:

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

Apache 2.4.3 - teraz działa z powyższym dodatkiem, a ponadto miałem „zaznaczone” usługi Apache i MySQL w Panelu sterowania, co powodowało, że XAMPP CP przestał odpowiadać. Niezaznaczone usługi - uruchomiono Apache, ale błąd dostępu zabroniony. Dodano powyższe uprawnienia i już działa. Dzięki!!
Sean Kendle

2
Zasadniczo to - brakowało mi dyrektywy Options. Options Indexes FollowSymLinksbyło wszystkim, czego potrzebowałem na Apache2.2, YMMV
Ed Orsi,

W przeciwieństwie do wybranej odpowiedzi zadziałało to cudownie. Z jakiegoś powodu samo „Wymagaj wszystkiego, co zostało przyznane”, jak sugeruje ta odpowiedź, nie zadziałało, ponieważ natychmiast zawiesiło XAMPP. Ale ta odpowiedź zadziałała z tymi z <directory>, więc dziękuję za odpowiedź.
Scrydan

Czy ktoś może mi tutaj pomóc? Próbuję osiągnąć to samo w
MAMP

TYLKO Options Allpracował dla mnie! To brakujący składnik!
Theodore R. Smith

10

Dla mnie (również XAMPP na Windows 7) zadziałało:

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

To jest ta linia, która spowodowałaby 403:

Order allow,deny

.htaccess nie działał, dopóki nie zmieniłem odpowiedzi, dzięki.
ssi-anik

gdy brakuje pliku index.html i chcesz po prostu wyświetlić wszystkie strony w tym folderze, możesz dodać tylko następujące elementy w ramach dyrektywy <Directory>: Require all grantediOptions Indexes FollowSymLinks
tatskie

8

Używam XAMPP 1.6.7 w systemie Windows 7. Ten artykuł zadziałał dla mnie.

Dodałem następujące wiersze w pliku httpd-vhosts.confpod adresem C:/xampp/apache/conf/extra.
Odkomentowałem też linię# 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>

Po ponownym uruchomieniu apache nadal nie działał. Następnie musiałem wykonać krok 9 wspomniany w artykule, edytując plik 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  

Potem zabrałem się do pracy http://mysite.dev


To naprawdę pomogło. Dziękuję bardzo. uratowałeś mi dzień. :)
Abhishek Goel

6

Dziękuję, zadziałało! Ale to wymieniłem

AllowOverride AuthConfig Indexes

z tym

AllowOverride All

W przeciwnym razie .htaccess nie działał: mam problemy z RewriteEngine i komunikatem o błędzie „RewriteEngine not allowed here”.


3

Powyższe sugestie nie zadziałały dla mnie. Mam go uruchomionego w moich oknach, korzystając z inspiracji z http://butlerccwebdev.net/support/testingserver/vhosts-setup-win.html

Dla HTTP wewnątrz 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>

Do korzystania z protokołu Https (Open SSL) wewnątrz 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>

Mam nadzieję, że to komuś pomoże!


2

Po tylu zmianach, próbach i odpowiedziach. Dla

Systemy operacyjne : Windows 7 / Windows 10

Wersja Xampp: Xampp lub Xampp Portable 7.1.18 / 7.3.7 (panel sterowania v3.2.4)

Instalatory: win32-7.1.18-0-VC14-installer / xampp-windows-x64-7.3.7-0-VC15-installer

  1. Nie edytuj innych plików, takich jak httpd-xampp

  2. Zatrzymaj Apache

  3. Otwarte httpd-vhosts.conf się w **your_xampp_directory**\apache\conf\extra\(katalogu XAMPP może być domyślnie: C:/xampp/htdocs)

  4. Usuń hash przed następującym wierszem (ok. Wiersz 20): NameVirtualHost *:80(może to być opcjonalne)

  5. Dodaj następujące hosty wirtualne na końcu pliku, biorąc pod uwagę ścieżki katalogów:

    ##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. Edytuj (z dostępem administratora) plik hosta (znajdujący się pod adresem Windows\System32\drivers\etc, ale z następującą wskazówką, tylko jeden adres IP sprzężenia zwrotnego dla każdej domeny :

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

W każdym przypadku powtórz drugi blok, pierwszy jest blokiem głównym tylko do celów „domyślnych”.


1
Ustawienie różnych adresów IP dla każdego wirtualnego hosta zadziałało! Jednak w przeciwieństwie do WAMP, XAMP nie interpretuje nazwy każdego serwera, gdy wszystkie są połączone w jeden adres IP (np 127.0.0.1 localhost,test1.localhost.).
CPHPython

@CPHPython dzięki za wspomnienie o różnicach i poprawienie mojej odpowiedzi. Miło, że mogłem pomóc! Pamiętam, że dużo walczyłem z tym problemem
Leandro

1
dziękuję, również cieszę się, że mogę pomóc! Zanim znalazłem twoją odpowiedź, spędziłem trochę czasu próbując dowiedzieć się, dlaczego hosty systemu Windows nie odzwierciedlają nazw serwerów.
CPHPython

0

Używam Xampp 1.7.3. Czerpiąc inspirację stąd: xampp 1.7.3 upgrade zepsuty wirtualny host dostęp zabroniony

ZAMIAST dodawać <Directory> .. </Directory>w httpd-vhosts.conf , dodaję go w httpd.conf zaraz po <Directory "D:/xampplite/cgi-bin"> .. </Directory>.

Oto, co dodam w httpd.conf:

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

A oto co dodałem w httpd-vhosts.conf

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

Dodaję również Listen 8001w httpd.conf, aby zakończyć moje ustawienia.

Mam nadzieję, że to pomoże


0

Dla wielu jest to kwestia pozwolenia, ale dla mnie okazuje się, że błąd wynikał z pomyłki w formularzu, który próbowałem przesłać. Aby być konkretnym, przypadkowo umieściłem znak „większe niż” po wartości „akcja”. Proponuję więc, abyś ponownie przyjrzał się swojemu kodowi.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.