ฉันจะปิดการใช้งานการสืบค้นไดเรกทอรีได้อย่างไร


245

ฉันต้องการปิดการใช้งานการสืบค้นไดเรกทอรีของโฟลเดอร์ / galerias และไดเรกทอรีย่อยทั้งหมด

ดัชนีของ / galerias / 409

* Parent Directory
* i1269372986681.jpg
* i1269372986682.jpg
* i1269372988680.jpg

2
พวกเขาพูดถึงเรื่องนี้ในภาพยนตร์เรื่อง "The Social Network" youtu.be/BPazh2kDdvA?t=1m49s
Daniel L. VanDenBosch

คำตอบ:


420

สร้างไฟล์. htaccess ที่มีบรรทัดต่อไปนี้:

Options -Indexes

นั่นคือทางเลือกหนึ่ง อีกตัวเลือกหนึ่งคือการแก้ไขไฟล์กำหนดค่า apache ของคุณ

ในการทำเช่นนั้นคุณต้องเปิดมันด้วยคำสั่งก่อน:

vim /etc/httpd/conf/httpd.conf

จากนั้นค้นหาบรรทัด: ดัชนีตัวเลือก FollowSymLinks

เปลี่ยนบรรทัดนั้นเป็น: ตัวเลือก FollowSymLinks

สุดท้ายบันทึกและออกจากไฟล์และรีสตาร์ทเซิร์ฟเวอร์ apache ด้วยคำสั่งนี้:

sudo service httpd restart

(คุณมีคู่มือพร้อมภาพหน้าจอที่นี่ )


14
สิ่งนี้สามารถใช้งานได้ใน <Directory> หรือ <Location> ในไฟล์. config จริงด้วย
chrismarx

1
@chrismarx ไฟล์. config ใดที่ฉันจะวางไว้? ดูเหมือนว่า. htaccess จะไม่เปิดใช้งานบนเซิร์ฟเวอร์ของฉันและฉันได้อ่านจะดีกว่าที่จะไม่ใช้งาน ฉันมีสิทธิ์เข้าถึงไฟล์เซิร์ฟเวอร์ทั้งหมดแม้ว่าจะเป็น vps
Charles John Thompson III

1
ฉันติดอยู่กับคำถามเดียวกันนี้ฉันได้เพิ่มไฟล์. htaccess พร้อมรหัสลงในไดเรกทอรีเดียวกันกับหน้าเว็บของฉัน ฉันกำลังทำอะไรผิดหรือเปล่า?
Randy Gilman

10
โปรดทราบว่า.htaccessอาจปิดโดย โปรดตรวจสอบAllowOverrideคำสั่ง หากตั้งค่าเป็นแสดงNoneว่า.htaccessถูกปิด AllowOverride Allคุณสามารถเปิดใช้งานโดยการตั้งค่า เพื่อให้แม่นยำยิ่งขึ้นAllหมายถึงคำสั่ง Apache ทั้งหมด
Julian

2
ถ้าคุณมีการควบคุม http.conf ให้ทำตรงนั้นดีกว่า มีการแสดงที่มีประสิทธิภาพด้วย htaccess
Itay Moav -Malimovka

299

วิธีที่ดีที่สุดในการทำเช่นนี้คือปิดการใช้งานด้วยเว็บเซิร์ฟเวอร์ apache2 ใน Ubuntu 14.X ของฉัน - เปิด/etc/apache2/apache2.confการเปลี่ยนแปลงจาก

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

ถึง

<Directory /var/www/>
        Options FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

จากนั้นรีสตาร์ท apache โดย:

sudo service apache2 reload

นี่จะปิดการใช้งานการแสดงรายการไดเรกทอรีจากทุกโฟลเดอร์ที่ apache2 ทำหน้าที่


11
'บริการ sudo apache2 reload ' จะเพียงพอ!
doctorlai

2
@Jay ฉันยังลอง "ตัวเลือก - ดัชนี" แต่ Apache จะไม่เริ่ม afterword ฉันใช้เซิร์ฟเวอร์เวอร์ชั่น: Apache / 2.4.18 (Ubuntu) อย่างไรก็ตามการใช้ "ตัวเลือก FollowSymLinks" ทำงานตามคำตอบของ Dung ฉันแค่อยากรู้ว่าคุณใช้ Apache และ OS เวอร์ชันใดอยู่ อาจจะเป็นสิ่งที่รุ่น?
MikeyE

@Jay @MikeyE กันที่นี่; Apache ไม่โหลดซ้ำโดยใช้-Indexes
Crimbo

1
@Jay @MikeyE Apache ดูเหมือนว่าจะโหลด / รีสตาร์ทหากคุณลบFollowSymLinks
Crimbo

2
การทำงานapachectl configtestหลังจากเพิ่มOptions -Indexes FollowSymLinksไปยัง httpd.conf คายข้อผิดพลาดต่อไปนี้: "ตัวเลือกทั้งหมดต้องเริ่มต้นด้วย + หรือ - หรืออาจไม่มีตัวเลือกใด ๆ " ดังนั้นสิ่งที่จะทำงานคือOptions -Indexes +FollowSymLinks
John T.

45

นอกเหนือจากสองวิธีที่ผ่านมาแล้ว (แก้ไข/etc/apache2/apache2.confหรือเพิ่มตัวเลือก -Indexesในไฟล์. htaccess) นี่เป็นอีกวิธีหนึ่ง

a2dismod autoindex

รีสตาร์ทเซิร์ฟเวอร์ apache2 หลังจากนั้น

sudo service apache2 restart

4
คุณสามารถใช้a2dismod -f autoindexสำหรับการดำเนินการคำสั่งที่ไม่ปิดกั้น
КонстантинВан

ตัวเลือกนิวเคลียร์ที่ดี! สิ่งนี้ใช้ได้กับAliasโฟลเดอร์และพา ธ อื่น ๆ ที่ให้บริการโดย Apache
kontextify

ฉันควรตระหนักถึงผลข้างเคียงใด ๆ หรือไม่
Naresh Kumar

28

แก้ไข / สร้าง.htaccessไฟล์ภายใน/galeriasด้วยสิ่งนี้:

Options -Indexes

การเรียกดูไดเรกทอรีจัดทำโดยโมดูลmod_autoindex


- ดัชนีในไดเรกทอรีรากไม่ทำงานใน apache2.4.33 ฉันต้องใช้คำตอบของ @Sarvar Nishonboyev
Felipe Valdes

1
@FelipeValdes โปรดอ่านทั้งคำถามและคำตอบของฉันอย่างระมัดระวัง เราไม่ได้พูดถึงไดเรกทอรีราก แต่เป็นไดเรกทอรีย่อยและถูกขอให้ทำได้ใน.htaccessไฟล์ (ซึ่งไม่ใช่วิธีที่มีประสิทธิภาพมากที่สุด แต่มักจะเป็นตัวเลือกเดียวในบัญชีโฮสติ้งที่ใช้ร่วมกันหรือระบบไม่ว่าง sysadmins)
ÁlvaroGonzález

23

คุณสามารถวางไฟล์ว่างที่เรียกว่าindex.htmlลงในแต่ละไดเรกทอรีที่คุณไม่ต้องการในรายการ สิ่งนี้มีข้อดีหลายประการ:

  • มัน (ปกติ) ต้องมีการกำหนดค่าเป็นศูนย์บนเซิร์ฟเวอร์
  • มันจะทำงานต่อไปแม้ว่าผู้ดูแลระบบเซิร์ฟเวอร์จะตัดสินใจใช้ "AllowOverride None" ในการกำหนดค่าเซิร์ฟเวอร์ (หากคุณใช้.htaccessไฟล์สิ่งนี้อาจนำไปสู่ข้อความ "ข้อผิดพลาด 500 - ข้อผิดพลาดเซิร์ฟเวอร์ภายใน" สำหรับผู้ใช้ของคุณ!)
  • นอกจากนี้ยังช่วยให้คุณสามารถย้ายไฟล์จากเซิร์ฟเวอร์หนึ่งไปยังเซิร์ฟเวอร์ถัดไปอีกครั้งโดยไม่ต้องยุ่งกับการกำหนดค่า apache

ตามหลักการแล้วการทำดัชนีอัตโนมัติอาจถูกทริกเกอร์ด้วยไฟล์อื่น (ซึ่งถูกควบคุมโดยDirectoryIndexตัวเลือก) แต่ฉันยังไม่เจอสิ่งนี้ในโลกแห่งความเป็นจริง


หัวขึ้น! สิ่งนี้อาจใช้ได้กับDirectoryIndex Directive ที่index.htmlกำหนดไว้เป็นหลักเท่านั้น
nyedidikeke

18

สิ่งหนึ่งที่สำคัญคือการตั้งค่า apache เว็บเซิร์ฟเวอร์ที่ปลอดภัยคือการปิดการเรียกดูไดเรกทอรี โดยค่าเริ่มต้น apache มาพร้อมกับคุณสมบัตินี้เปิดใช้งาน แต่มันเป็นความคิดที่ดีที่จะปิดการใช้งานเว้นแต่คุณจะต้องการมันจริงๆ เปิดไฟล์ httpd.conf ในโฟลเดอร์ apache และค้นหาบรรทัดที่มีลักษณะดังนี้:

Options Includes Indexes FollowSymLinks MultiViews

จากนั้นลบคำดัชนีและบันทึกไฟล์ รีสตาร์ท apache แค่นั้นแหละ


1
สมบูรณ์ ปิดใช้งานมันทั้งเครื่อง ทำไมค่านี้จะเปิดใช้งานโดยค่าเริ่มต้นฉันไม่มีความคิด ...
eduncan911

1
สิ่งนี้ใช้ได้กับฉันใน Ubuntu (apache2.conf) แต่ตัวเลือก. htaccess - ดัชนีไม่ได้
Danniel ตัวน้อย

สิ่งนี้ใช้ได้กับฉันใน Ubuntu (/etc/apache2/apache2.conf) แต่ตัวเลือก. htaccess -Indexes ไม่ได้
user2875289

5

หากคุณเลือกที่จะแก้ไขไฟล์ httpd.conf ของคุณเพื่อแก้ไขปัญหานี้และคุณมีคำสั่งตัวเลือกหลายตัวคุณต้องเพิ่ม - หรือ + ก่อนแต่ละคำสั่ง ตัวอย่าง:

ตัวเลือก -Indexes + FollowSymLinks


3

นี่ไม่ใช่คำตอบเพียงแค่ประสบการณ์ของฉัน:

บนของ Ubuntu 12.04 apache2 ไม่พบIndexesทั้งใน apache2.conf หรือ httpd.conf sites-available/defaultโชคดีที่ฉันพบใน หลังจากลบออกตอนนี้จะไม่เห็นรายการไดเรกทอรี sites-available/default-sslอาจจะต้องทำเพื่อ


2

เปิดไฟล์. htaccess ของคุณแล้วป้อนรหัสต่อไปนี้

Options -Indexes

ตรวจสอบให้แน่ใจว่าคุณกดปุ่ม ENTER (หรือปุ่ม RETURN หากคุณใช้ Mac) หลังจากป้อนคำว่า "Options -Indexes" เพื่อให้ไฟล์ลงท้ายด้วยบรรทัดว่าง


2

เพิ่มสิ่งนี้ในไฟล์. htaccess ของคุณ:

Options -Indexes

หากไม่สามารถใช้งานได้ไม่ว่าด้วยเหตุผลใดก็ตามให้ลองใช้ไฟล์. htaccess ของคุณ:

IndexIgnore *

1

หากต้องการตอบ @ GauravKachhadiya ให้สมบูรณ์:

IndexIgnore *.jpg

หมายถึง "ซ่อนเฉพาะไฟล์นามสกุล. jpgจากการจัดทำดัชนี

IndexIgnore directive ใช้นิพจน์ตัวแทนเพื่อจับคู่กับไดเรกทอรีและไฟล์

  • ตัวอักษรรูปดาวมันตรงกับอักขระใด ๆ ในสตริงเช่น: foo หรือ foo.extension ในตัวอย่างต่อไปนี้เราจะปิดรายการไดเรกทอรีไม่มีไฟล์หรือ dirs จะปรากฏในดัชนี:

    ดัชนีชี้วัด *

หรือถ้าคุณต้องการซ่อนไฟล์พิเศษในรายการไดเรกทอรีเราสามารถใช้งานได้

IndexIgnore *.php

* .php => จับคู่สตริงที่ขึ้นต้นด้วยอักขระใด ๆ และลงท้ายด้วย. php

ตัวอย่างด้านบนซ่อนไฟล์ทั้งหมดที่ลงท้ายด้วย. php


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