ไม่ใช้รหัสผ่านป้องกัน php ใน Apache

ฉันติดตั้ง Apache httpd บน CentOS 7 ของฉันแล้ว โดยการเพิ่มโค้ดต่อไปนี้ใน httpd.conf ฉันสามารถป้องกันเว็บไซต์ด้วยรหัสผ่านได้

<Directory /var/www/html>
  AuthType Basic
  AuthName "Restricted Files"
  AuthBasicProvider file
  AuthUserFile /var/www/password/htpasswd
  Require user validUser

  <Files index.php>
    Require all granted
  </Files>
</Directory>

เนื่องจากฉันต้องการให้ /var/www/html/index.php ไม่มีการป้องกันด้วยรหัสผ่าน Require all granted จึงถูกเพิ่มดังที่แสดง อย่างไรก็ตาม สิ่งนี้ยังคงต้องใช้ชื่อผู้ใช้และรหัสผ่านของฉัน ช่วยหน่อยนะครับ ขอบคุณครับ ^^


person chunchiu Chan    schedule 24.09.2015    source แหล่งที่มา


คำตอบ (1)


อย่าปกป้องไดเรกทอรีทั้งหมด แต่ป้องกันโดยใช้ LocationMatch:

<LocationMatch "^/(?!index\.php).|index\.php.+$">
  AuthType Basic
  AuthName "Restricted Files"
  AuthBasicProvider file
  AuthUserFile /var/www/password/htpasswd
  Require user validUser
</LocationMatch>
person Matthias Wimmer    schedule 24.09.2015
comment
ขอบคุณที่ตอบ แต่ขอโทษที่มันใช้งานไม่ได้ เนื่องจากมีเพจส่วนตัวมากกว่านี้ภายใต้ /var/www/html ฉันจึงต้องการอนุญาตให้เข้าถึงเฉพาะ index.php โดยไม่ต้องมีการตรวจสอบสิทธิ์เท่านั้น นั่นเป็นเหตุผลที่ฉันปกป้องไดเร็กทอรีทั้งหมด - person chunchiu Chan; 24.09.2015
comment
ใช่ ฉันเข้าใจแล้ว LocationMatch ปกป้องทุกอย่างยกเว้น /index.php - person Matthias Wimmer; 24.09.2015
comment
ขอบคุณเพื่อน. ในที่สุดฉันก็พบว่ามีอะไรผิดปกติ ตอนนี้ฉันใช้ WordPress และโฟลเดอร์ย่อยทั้งหมดได้รับการป้องกัน เมื่อฉันเข้าถึง index.php เนื้อหาที่ได้รับการคุ้มครองเหล่านั้นจะถูกเข้าถึง ดังนั้นดูเหมือนว่าดัชนี.php นั้นจะได้รับการปกป้องด้วยรหัสผ่านเช่นกัน - person chunchiu Chan; 29.09.2015