ความแตกต่างระหว่าง <Location> และ <Directory> คำสั่ง Apache


29

ฉันติดตั้ง Zend Server แล้วและสังเกตว่ามีการเพิ่มสิ่งต่อไปนี้ลงในไฟล์ httpd.conf ของฉัน:

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

แต่ฉันไม่สามารถดูเหมือนจะเข้าใจความแตกต่างระหว่างสถานที่ตั้งและไดเรกทอรี ฉันเปลี่ยนเป็นสิ่งต่อไปนี้ซึ่งทำให้ฉันมีเหตุผลมากขึ้นและยังใช้งานได้:

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

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

ฉันสามารถเก็บการเปลี่ยนแปลงของฉันหรือฉันควรจะนำมันกลับมาเหมือนเดิมหรือไม่?

คำตอบ:


41

Directoryคำสั่งใช้งานได้เฉพาะกับวัตถุระบบไฟล์ (เช่น / var / www / mypage, C: \ www \ mypage) ในขณะที่Locationคำสั่งใช้งานได้เฉพาะกับ URL (ส่วนหลังชื่อโดเมนไซต์ของคุณเช่น www.mypage.com/mylocation)

การใช้ตรงไปตรงมา - คุณจะใช้Locationถ้าคุณต้องการปรับแต่งสิทธิ์การเข้าถึงด้วย URL และคุณจะใช้Directoryถ้าคุณต้องการควบคุมสิทธิ์การเข้าถึงไดเรกทอรี (และไดเรกทอรีย่อย) ในระบบไฟล์


ฉันยังสับสนอยู่ ... ทำไม Zend ถึงใช้ทั้งสองอย่าง? ฉันสามารถรักษาความเปลี่ยนแปลงของฉันหรือมีบางอย่างผิดปกติได้หรือไม่?
Ricardo Amaral

1
ไม่การกำหนดค่าของคุณไม่เหมือนกับของเดิม - คุณลบ AllowOverride จากไดเรกทีฟไดเรกทีฟและนั่นหมายความว่าคุณจะไม่สามารถใช้ไฟล์. htaccess ใน C: \ Program Files \ Zend \ ZendServer \ GUI \ html การตั้งค่าตัวเลือกไดเรกทอรีแตกต่างจากการตั้งค่าตัวเลือก URL นี่คือสาเหตุที่พวกเขาใช้ทั้งสองอย่าง
ipozgaj

1
การเขียนระยะยาวใน apache docs เกี่ยวกับ Directory vs. Location (และอื่น ๆ ): httpd.apache.org/docs/2.2/sections.html
Dan Pritts

2

สามารถใช้ตำแหน่งได้เมื่อใช้ AJP หรือการเปลี่ยนเส้นทางพร็อกซี ตัวอย่างเช่นโมดูล PLSQL APEX ของ Oracle ใช้ URL ต่อไปนี้: / pls / apex / f? p = 1: 1

หากคุณพยายามที่จะ จำกัด การใช้ไดเรกทอรีนี้มันจะไม่ทำงานเนื่องจากเป็น Pass-thru และไม่ใช่ไดเรกทอรีทางกายภาพบนเซิร์ฟเวอร์ สถานที่ทำงาน!

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