การเพิ่ม VirtualHost ล้มเหลว: ข้อผิดพลาดในการเข้าถึงที่ต้องห้าม 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

Okay: นี่คือสิ่งที่ฉันทำตอนนี้และแก้ไขได้:

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>INSIDE -part <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ทำให้การกำหนดค่าของฉันทำงาน
Camilo Díaz Repka

httpd-vhosts.confเป็นไฟล์ config สำหรับ Apache Apache 'รัน' รหัส php ดาวน์โหลดและติดตั้งxamppและเปลี่ยนการกำหนดค่าตามที่ระบุไว้ข้างต้น
Highmastdon

6
ในฐานะของ Apache 2.4 การเข้าถึงคำสั่งควบคุมเพื่อให้ปฏิเสธและตอบสนองจะเลิก ตรวจสอบให้แน่ใจว่าคุณใช้เวอร์ชันที่ต่ำกว่าเมื่อใช้คำสั่งเหล่านี้หรือใช้ Need in แทน
Pascalculator

4
ในฐานะที่เป็น @Pascalculator กล่าวว่าใช้แทนRequire all granted ฉันต้องการเน้นแทนเพราะมันไม่ทำงานเมื่อฉันมีตัวเลือกอื่น ๆ ในการกำหนดค่าของฉัน แต่เมื่อฉันทิ้งไว้เพียงอันนี้มันใช้งานได้
user2428118

1
@davejal ขอบคุณมากและไม่มีปัญหา :) ฉันไม่ต้องการที่จะกระตุกเกี่ยวกับเรื่องนี้ แน่นอนว่า EQ ที่น้อยกว่านี้น่าจะดีที่นี่ :)
Highmastdon

60

สำหรับฉันทำงานเมื่อฉันเปลี่ยนเนื้อหา "ไดเรกทอรี" เป็น:

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

Apache 2.4.3 - ตอนนี้ทำงานร่วมกับการเพิ่มข้างต้นบวกกับฉันได้ให้บริการ Apache และ MySQL "ตรวจสอบ" ในแผงควบคุมซึ่งทำให้ XAMPP CP หยุดการตอบสนอง บริการที่ไม่ได้ตรวจสอบ - Apache ทำงาน แต่มีข้อผิดพลาดที่ต้องห้ามในการเข้าถึง เพิ่มสิทธิ์ข้างต้นและใช้งานได้ทันที ขอบคุณ !!
Sean Kendle

2
พื้นฐานนี้ - ฉันไม่มีตัวเลือกคำสั่ง Options Indexes FollowSymLinksเป็นสิ่งที่ฉันต้องการใน Apache2.2, YMMV
Ed Orsi

สิ่งนี้ทำงานได้อย่างยอดเยี่ยมสำหรับฉันเมื่อเทียบกับคำตอบที่เลือก ด้วยเหตุผลบางอย่าง "ต้องการการอนุญาตทั้งหมด" ด้วยตัวเองเนื่องจากคำแนะนำนั้นไม่ได้ผลเนื่องจาก XAMPP ขัดข้องทันที แต่คำตอบนี้ใช้ได้กับผู้ที่อยู่ใน <ไดเรกทอรี> ดังนั้นขอบคุณสำหรับคำตอบ
Scrydan

มีคนช่วยฉันที่นี่ได้ไหม ฉันพยายามที่จะบรรลุสิ่งเดียวกันใน MAMP stackoverflow.com/q/40405663/4480164
cyber8200

เท่านั้นOptions Allทำงานให้ฉัน! มันเป็นส่วนผสมที่ขาดหายไป!
Theodore R. Smith

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 หายไปและคุณเพียงต้องการแสดงหน้าทั้งหมดในโฟลเดอร์นี้คุณสามารถเพิ่มเฉพาะภายใต้คำสั่ง <ไดเรกทอรี>: 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


สิ่งนี้ช่วยได้จริงๆ ขอบคุณมาก. คุณบันทึกวันของฉัน :)
Abhishek Goel

6

ขอบคุณที่ใช้งานได้! แต่ฉันแทนที่สิ่งนี้

AllowOverride AuthConfig Indexes

กับที่

AllowOverride All

มิฉะนั้น. htaccess ไม่ทำงาน: ฉันมีปัญหากับ RewriteEngine และข้อความแสดงข้อผิดพลาด "RewriteEngine ไม่อนุญาตที่นี่"


3

คำแนะนำข้างต้นไม่ได้ผลสำหรับฉัน ฉันได้รับมันทำงานบน windows ของฉันโดยใช้แรงบันดาลใจจาก 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

หลังจากการเปลี่ยนแปลงมากมายและพยายามและคำตอบ สำหรับ

SOs: Windows 7 / Windows 10

เวอร์ชั่น Xampp: Xampp หรือ Xampp แบบพกพา 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. หยุด Apache

  3. เปิดhttpd-vhosts.confอยู่ใน**your_xampp_directory**\apache\conf\extra\(directory XAMPP ของคุณอาจจะตามค่าเริ่มต้นC:/xampp/htdocs)

  4. ลบแฮชก่อนบรรทัดต่อไปนี้ (aprox. line 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แต่ด้วยเคล็ดลับต่อไปนี้จะมีเพียงหนึ่งลูปแบ็คไอพีสำหรับทุกโดเมน :

    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 ขอบคุณที่พูดถึงความแตกต่างและปรับปรุงคำตอบของฉัน ดีใจที่ได้ช่วยเหลือ! ฉันจำได้ว่าต่อสู้กับปัญหานี้มาก
Leandro

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

สำหรับหลาย ๆ คนมันเป็นปัญหาการอนุญาต แต่สำหรับฉันแล้วมันกลับกลายเป็นว่าข้อผิดพลาดเกิดขึ้นจากความผิดพลาดในรูปแบบที่ฉันพยายามจะส่ง หากต้องการเจาะจงฉันได้ใส่เครื่องหมาย "มากกว่า" โดยไม่ตั้งใจหลังจากค่าของ "การกระทำ" ดังนั้นฉันขอแนะนำให้คุณลองดูรหัสของคุณอีกครั้ง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.