Perbedaan antara arahan Apache <Lokasi> dan <Direktori>

29

Saya telah menginstal Zend Server dan melihat sesuatu seperti yang berikut ini ditambahkan ke file httpd.conf saya:

<Location /ZendServer>
 Order Allow,Deny
 Allow from 127.0.0.1
</Location>

Alias /ZendServer "C:\Program Files\Zend\ZendServer\GUI\html"

<Directory "C:\Program Files\Zend\ZendServer\GUI\html">
 AllowOverride All
</Directory>

Tapi sepertinya saya tidak bisa memahami perbedaan antara Lokasi dan Direktori . Saya berubah menjadi sesuatu seperti berikut ini, yang lebih masuk akal bagi saya, dan masih berfungsi:

<Location /ZendServer>
 AllowOverride All
 Order Allow,Deny
 Allow from 127.0.0.1
</Location>

Alias /ZendServer "C:\Program Files\Zend\ZendServer\GUI\html"

Bisakah saya menyimpan perubahan saya atau saya harus mengembalikannya seperti semula?

Ricardo Amaral
sumber

Jawaban:

41

Directorydirektif hanya berfungsi untuk objek sistem berkas (mis. / var / www / mypage, C: \ www \ mypage), sementara Locationdirektif hanya berfungsi untuk URL (bagian setelah nama domain situs Anda, mis. www.mypage.com/mylocation).

Penggunaannya mudah - Anda akan menggunakan Locationjika Anda perlu memperbaiki hak akses dengan URL, dan Anda akan menggunakannya Directoryjika Anda perlu mengontrol hak akses ke direktori (dan subdirektori-nya) di sistem file.

ipozgaj
sumber
Saya masih bingung ... Mengapa Zend menggunakan keduanya saat itu? Bisakah saya menyimpan perubahan saya atau ada yang salah dengan itu?
Ricardo Amaral
1
Tidak, konfigurasi Anda tidak sama dengan yang asli - Anda menghapus AllowOverride dari direktif Direktori, dan itu berarti Anda tidak akan dapat menggunakan file .htaccess di C: \ Program Files \ Zend \ ZendServer \ GUI \ html direktori. Pengaturan opsi direktori berbeda dari pengaturan opsi URL, itu sebabnya mereka menggunakan keduanya.
ipozgaj
1
Tulisan panjang di dokumen apache tentang Direktori vs. Lokasi (dan lainnya): httpd.apache.org/docs/2.2/sections.html
Dan Pritts
2

Lokasi dapat digunakan saat menggunakan AJP atau pengalihan proxy. Sebagai contoh, modul Oracle APS PLSQL menggunakan URL berikut: / pls / apex / f? P = 1: 1

Jika Anda mencoba untuk membatasi menggunakan direktori ini, itu tidak akan pernah berhasil karena itu pass-thru dan bukan direktori fisik di server. Lokasi berhasil!

Al Garrison
sumber