วิธีลบการป้องกันรหัสผ่าน. htaccess ออกจากไดเร็กทอรีย่อย


98

ฉันใช้รหัสผ่านป้องกันทั้งเว็บไซต์ของ.htaccessฉัน แต่ฉันต้องการเปิดเผยหนึ่งในไดเรกทอรีย่อยเพื่อให้สามารถดูได้โดยไม่ต้องใช้รหัสผ่าน

ฉันจะปิดใช้งานการป้องกันรหัสผ่าน htaccess สำหรับไดเรกทอรีย่อยได้อย่างไร .htaccessไวยากรณ์คืออะไรโดยเฉพาะ

นี่คือ.htaccessไฟล์ของฉันที่อยู่ในรูทของ ftp

AuthName "ผู้ดูแลเว็บไซต์"
AuthUserFile /dir/.htpasswd
AuthGroupFile / dev / null

AuthName ปลอดภัย
AuthType พื้นฐาน
ต้องการชื่อผู้ใช้ผู้ใช้ 1
คำสั่งอนุญาตปฏิเสธ
อนุญาตจากทั้งหมด

4
สิ่งนี้อาจเหมาะกว่าสำหรับ serverfault
ขอทาน

คำตอบ:


154

คุณต้องสร้าง.htaccessไฟล์ใหม่ในไดเร็กทอรีที่ต้องการและรวมSatisfy anyคำสั่งไว้ในนั้นสำหรับ Apache 2.3:

# allows any user to see this directory
Satisfy Any

ไวยากรณ์เปลี่ยนไปใน Apache 2.4 ซึ่งมีผลเช่นเดียวกัน:

Require all granted

7
ฉันสามารถทำให้สิ่งนี้ทำงานAllow from allได้โดยไม่Satisfy Anyต้อง
Jess Telford

@JessTelford ใช้ประโยชน์จากข้อมูลโค้ดได้ดี @RageZ +1 สำหรับคำตอบที่ได้ผลสำหรับฉัน คุณสามารถแก้ไขคำตอบให้ง่ายมากและโพสต์โดยใช้วิธีการข้อมูลโค้ด ไม่งั้นจะต้องมีใครคิดthanks
Jesse Burcsik

2
@JessTelford คือการทำงานและมันก็พลาดสะกดคำว่าSatisfy Any Satisify Anyนั่นอาจเป็นเหตุผลที่มันไม่ได้ผลสำหรับคุณ
BlueBird

1
ฉันจำเป็นต้องมีไฟล์เดียวที่ไม่มีการป้องกัน (ทุกอย่างได้รับการป้องกัน) ทำเหมือนกันในส่วน <Files>
Nick

สิ่งนี้ใช้ไม่ได้สำหรับฉัน - ฉันยังคงได้รับโมดอลรหัสผ่านเพื่อขอชื่อผู้ใช้และ pwd .. โดยใช้ firefox & windows 7 ... มีใครคิดบ้างไหม?
ItsMeDom

36

เพิ่มคำตอบของ RageZ ฉันใช้สิ่งนี้ใน Server Directives:

<Directory /var/www/protected/>
     AuthType Basic
     AuthName "Production"
     AuthUserFile /path/to/.htpasswd
     Require valid-user
</Directory>

<Directory /var/www/protected/unprotected>
     Satisfy Any
</Directory>

น่ากลัว ขอบคุณ RageZ!


9

เพียงสร้าง.htaccessไดเร็กทอรีย่อยใหม่ที่ต้องการด้วยคำสั่งนี้:

Allow from all

คุณสามารถ จำกัด เฉพาะ IP ของคุณด้วย:

Allow from x.x.x.x

ดู: http://httpd.apache.org/docs/current/mod/mod_access_compat.html


ใช้งานได้เมื่อฉันใส่ "ต้องได้รับอนุญาตทั้งหมด" แทน "อนุญาตจากทั้งหมด" และ "ตอบสนองใด ๆ " สองคนนั้นไม่ได้ผลสำหรับฉัน ฉันใช้ Apache 2.4
endo64

1

คุณต้องเพิ่มไฟล์. htaccess อื่นในไดเร็กทอรีย่อยที่ลบล้างการพิสูจน์ตัวตน . htaccess ลดหลั่นกันขึ้นไปนั่นคือมันจะดูในโฟลเดอร์ปัจจุบันจากนั้นขึ้นระดับไปเรื่อย ๆ


4
คุณรู้ไวยากรณ์หรือไม่? ฉันเข้าใจแนวคิด แต่ไม่ทราบวิธีการนำไปใช้
justinl

หากคุณต้องการลบไฟล์ปัจจุบันและไม่ใช้สิทธิ์ให้แทนที่ด้วยไฟล์ว่างชื่อ. htaccess
Gaʀʀʏ

3
@Garry นั่นไม่ใช่วิธีการทำงานของ. htaccess cascading คุณต้องแทนที่ตัวเลือกอย่างชัดเจน
William Denniss

1

นี่คือวิธีอนุญาตไดเรกทอรีย่อย "foo" ผ่านการพิสูจน์ตัวตนพื้นฐานจากไฟล์. htaccess หลักบนไซต์:

AuthType Basic
AuthName "Password Required"
AuthUserFile /dir/.htpasswd
Require expr %{REQUEST_URI} =~ m#^/foo/#
Require valid-user

หมายเหตุ: ใช้งานได้ใน Apache 2.4 ฉันยังไม่ได้ยืนยันสำหรับเวอร์ชันก่อนหน้านี้


0

หากคุณต้องการป้องกัน Directoty ใด ๆ จากการพิสูจน์ตัวตน htaccess คุณสามารถใช้รหัสต่อไปนี้ในไฟล์ htaccess ของคุณที่ด้านบน

AuthType Basic AuthName "Enter Pass" AuthUserFile /home/public_html/.htpasswd /*PATH TO YOUR .htpasswd FILE*/ Require valid-user SetEnvIf Request_URI "(/DIRECTORY_NAME/)$" allow Order allow,deny Allow from env=allow

นอกจากนี้หากคุณต้องการป้องกันหลายไดเรกทอรีให้เพิ่ม

SetEnvIf Request_URI "(/DIRECTORY_NAME/)$" allow

หลายครั้งเป็นไดเรกทอรีจำนวนมากคุณต้องการลบออกจากการป้องกัน htaccess

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