Menambahkan VirtualHost gagal: Galat Akses Terlarang 403 (XAMPP) (Windows 7)

161

Saya memiliki instalasi XAMPP yang berjalan pada Windows 7.

Segera setelah saya menambahkan VirtualHost ke httpd-vhosts.conf, KEDUA yang 'biasa' http://localhostDAN yang baru dropbox.local tidak berfungsi.

Inilah yang saya tambahkan ke httpd-vhosts.conf:

<VirtualHost *:80>
    ServerAdmin [email protected]
    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>

Jadi saya mencari dropbox.local-error.loginformasi saya:

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

Kesalahan ini tampaknya diselesaikan dengan menambahkan

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

Tapi sekarang saya mendapatkan kesalahan ini di 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/

Terlebih lagi ketika saya mencoba mengakses http://localhost, saya tidak mendapatkan kesalahan secara teratur error.log, meskipun saya mendapatkan error 403ketika saya mencoba mengaksesnya.

Adakah yang bisa membantu ... Ini membuatku gila: S

EDIT: Juga di httpd.confsana adalah sebagai berikut (saya telah melihatnya disebutkan beberapa kali, jadi sebelum ada yang mengatakannya):

<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>
Highmastdon
sumber
1
Saya mendapatkan jawaban untuk diri saya sendiri tetapi saya belum dapat mempostingnya :( Reputasi tidak cukup: /
Highmastdon
Tidak satu pun dari jawaban ini yang berfungsi untuk saya :(
Pathros
Bisakah seseorang tolong saya di sini? Saya mencoba mencapai hal yang sama di MAMP stackoverflow.com/q/40405663/4480164
cyber8200

Jawaban:

340

Oke: Ini yang saya lakukan sekarang dan sudah terpecahkan:

httpd-vhosts.confPenampilan saya seperti ini sekarang:

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

Pertama, saya melihat bahwa perlu mengatur <Directory xx:xx>opsi. Jadi saya letakkan <Directory > [..] </Directory>-di bagian dalam <VirtualHost > [..] </VirtualHost>. Setelah itu, saya menambahkan AllowOverride AuthConfig Indexeske <Directory>pilihan.

Sekarang http://localhostjuga menunjuk ke dropbox-virtualhost. Jadi saya menambahkan dropbox.localuntuk <VirtualHost *:80>yang membuatnya sebagai<VirtualHost dropbox.local:80>

AKHIRNYA bekerja: D!

Saya pria yang bahagia! :) :)

Saya harap orang lain dapat menggunakan informasi ini.

Highmastdon
sumber
39
FWIW, saya melakukan hal yang sama dan masih memiliki masalah mengaksesi vhost saya. Namun, menambahkan Require all grantedsetelah Allow from allmembuat konfigurasi saya berfungsi.
Camilo Díaz Repka
Ini httpd-vhosts.confadalah file konfigurasi untuk Apache. Apache 'menjalankan' kode-php. Unduh dan pasang xamppdan ubah konfigurasi seperti yang disebutkan di atas.
Highmastdon
6
Pada Apache 2.4 perintah kontrol akses memesan, mengizinkan, menolak dan memuaskan sudah usang . Pastikan Anda menjalankan versi yang lebih rendah saat menggunakan arahan ini, atau gunakan Wajib sebagai gantinya.
Pascalculator
4
Seperti yang dikatakan @Pascalculator, gunakan Require all granted saja . Saya ingin menekankan bukan karena itu tidak berfungsi ketika saya memiliki opsi lain dalam konfigurasi saya, tetapi ketika saya hanya meninggalkan yang satu ini itu berfungsi.
user2428118
1
@davejal Terima kasih banyak dan tidak ada masalah :) Saya tidak ingin menjadi brengsek tentang hal itu. Memang sedikit lebih EQ bisa menyenangkan di sini :)
Highmastdon
60

Bagi saya berfungsi ketika saya mengubah konten "direktori" menjadi ini:

<Directory  "*YourLocation*">
Options All
AllowOverride All
Require all granted  
</Directory>
Imix
sumber
Apache 2.4.3 - sekarang bekerja dengan tambahan di atas, ditambah saya memiliki layanan Apache dan MySQL "diperiksa" di Control Panel yang menyebabkan XAMPP CP berhenti merespons. Layanan yang tidak dicentang - Apache berjalan, tetapi kesalahan Akses Terlarang. Menambahkan izin di atas, dan berfungsi sekarang. Terima kasih!!
Sean Kendle
2
Pada dasarnya ini - saya melewatkan direktif Opsi. Options Indexes FollowSymLinksadalah semua yang saya butuhkan di Apache2.2, YMMV
Ed Orsi
Ini bekerja sangat baik bagi saya sebagai lawan dari jawaban yang dipilih. Untuk beberapa alasan "Wajibkan semua diberikan" dengan sendirinya karena jawaban yang disarankan tidak berfungsi karena langsung membuat XAMPP mogok. Tapi jawaban ini berhasil dengan <direktori> jadi terima kasih atas jawabannya.
Scrydan
Bisakah seseorang tolong saya di sini? Saya mencoba mencapai hal yang sama di MAMP stackoverflow.com/q/40405663/4480164
cyber8200
HANYA Options Allbekerja untuk saya! Ini adalah bahan yang hilang!
Theodore R. Smith
10

Bagi saya (juga XAMPP di Windows 7), inilah yang berhasil:

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

Baris inilah yang akan menyebabkan 403:

Order allow,deny
lequebecois
sumber
.htaccess tidak berfungsi sampai saya mengubah jawaban Anda, terima kasih.
ssi-anik
ketika index.html hilang dan Anda hanya ingin menampilkan semua halaman di folder ini, Anda dapat menambahkan hanya di bawah direktif <Direktori>: Require all granteddanOptions Indexes FollowSymLinks
tatskie
8

Saya menggunakan XAMPP 1.6.7 di Windows 7. Artikel ini cocok untuk saya.

Saya menambahkan baris berikut dalam file httpd-vhosts.confdi C:/xampp/apache/conf/extra.
Saya juga telah membatalkan komentar baris# 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>

Setelah memulai kembali apache, itu masih tidak berfungsi. Kemudian saya harus mengikuti langkah 9 yang disebutkan dalam artikel dengan mengedit file 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  

Lalu saya mulai bekerja http://mysite.dev

Sithu
sumber
Ini sangat membantu. Terima kasih banyak. kamu menyelamatkan hariku. :)
Abhishek Goel
6

Terima kasih, itu berhasil! Tapi saya mengganti ini

AllowOverride AuthConfig Indexes

dengan itu

AllowOverride All

Jika tidak, .htaccess tidak berfungsi: Saya mendapat masalah dengan RewriteEngine dan pesan kesalahan "RewriteEngine tidak diizinkan di sini".

Adam
sumber
3

Saran di atas tidak berhasil untuk saya. Saya menjalankannya di windows saya, menggunakan inspirasi dari http://butlerccwebdev.net/support/testingserver/vhosts-setup-win.html

Untuk Http di dalam 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>

Untuk menggunakan Https (Open SSL) di dalam 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>

Semoga ini bisa membantu seseorang !!

Rahul Gupta
sumber
2

Setelah banyak perubahan dan mencoba dan menjawab. Untuk

SOs: Windows 7 / Windows 10

Versi Xampp: Xampp atau Xampp portable 7.1.18 / 7.3.7 (panel kontrol v3.2.4)

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

  1. Jangan mengedit file lain seperti httpd-xampp

  2. Hentikan Apache

  3. Terbuka httpd-vhosts.conf terletak di **your_xampp_directory**\apache\conf\extra\(direktori XAMPP Anda mungkin secara default: C:/xampp/htdocs)

  4. Hapus hash sebelum baris berikut (aprox. Line 20): NameVirtualHost *:80(ini mungkin opsional)

  5. Tambahkan host virtual berikut di akhir file, dengan mempertimbangkan jalur direktori Anda:

    ##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. Edit (dengan akses admin) file host Anda (terletak di Windows\System32\drivers\etc, tetapi dengan tip berikut, hanya satu ip loopback untuk setiap domain :

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

Untuk setiap contoh, ulangi blok kedua, yang pertama adalah blok utama hanya untuk tujuan "default".

Leandro
sumber
1
Pengaturan alamat IP yang berbeda untuk setiap host virtual berfungsi! Tidak seperti WAMP, XAMP tidak mengartikan setiap nama server ketika mereka semua dibundel dalam satu alamat IP (mis 127.0.0.1 localhost,test1.localhost.).
CPHPython
@ CPHPython terima kasih telah menyebutkan perbedaannya dan tingkatkan jawaban saya. Senang untuk membantu! Saya ingat banyak bertengkar dengan masalah ini
Leandro
1
terima kasih, senang bisa membantu juga! Sebelum menemukan jawaban Anda, saya telah menghabiskan beberapa waktu untuk mencari tahu mengapa host windows tidak mencerminkan nama server.
CPHPython
0

Saya menggunakan xampp 1.7.3. Menggunakan inspirasi dari sini: xampp 1.7.3 meningkatkan akses host virtual yang rusak dilarang

BUKAN menambahkan <Directory> .. </Directory>di httpd-vhosts.conf , saya tambahkan di httpd.conf setelah <Directory "D:/xampplite/cgi-bin"> .. </Directory>.

Inilah yang saya tambahkan di httpd.conf:

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

Dan inilah yang saya tambahkan di httpd-vhosts.conf

<VirtualHost *:8001>
    ServerAdmin [email protected]
    DocumentRoot "D:/CofeeShop"
    ServerName localhost:8001
</VirtualHost>

Saya juga menambahkan Listen 8001httpd.conf untuk menyelesaikan pengaturan saya.

Semoga ini bisa membantu

Tutompita
sumber
0

Bagi banyak orang itu masalah izin, tetapi bagi saya ternyata kesalahan itu disebabkan oleh kesalahan dalam bentuk yang saya coba kirimkan. Untuk lebih spesifik saya tidak sengaja meletakkan tanda "lebih besar dari" setelah nilai "aksi". Jadi saya sarankan Anda melihat kembali kode Anda.

Fred
sumber