Index Manager ใน cPanel ปรับแต่ง Directory Listing

ควบคุมว่าโฟลเดอร์ไหนบนเว็บไซต์ควรซ่อนหรือแสดงรายการไฟล์ให้สาธารณะเห็น

Index Manager ใน cPanel ปรับแต่ง Directory Listing cPanel

Index Manager ใน cPanel คืออะไร?

Index Manager เป็นเครื่องมือใน cPanel ที่ใช้ควบคุมพฤติกรรมของเว็บเซิร์ฟเวอร์เมื่อผู้เยี่ยมชมพยายามเข้าไปยังโฟลเดอร์ที่ไม่มีไฟล์ index (เช่น index.html, index.php) ในปกติ เว็บเซิร์ฟเวอร์มีตั้งค่าเริ่มต้นให้แสดง Directory Listing (รายชื่อไฟล์ในโฟลเดอร์) เมื่อไม่มี index file ทำให้เนื้อหาและโครงสร้างไฟล์ของเว็บไซต์เปิดเผยต่อสาธารณะ ซึ่งเป็นความเสี่ยงด้านความปลอดภัย

Index Manager ช่วยให้คุณ:

ความเสี่ยงของการเปิด Directory Listing

ถ้า Directory Listing เปิดอยู่ ผู้ที่ต่ออันตรายจะเห็นไฟล์และโฟลเดอร์ทั้งหมดบนเซิร์ฟเวอร์ของคุณ เช่น:

วิธีเปิดใช้งาน Index Manager ใน cPanel

Index Manager หา ใน cPanel Section ชื่อ "Files" หรือ "Domains" ขั้นตอน:

  1. Login เข้า cPanel ที่ https://yourdomain.com:2083
  2. ค้นหา Index Manager ในส่วน "Files" หรือเมนูด้านบน
  3. ถ้าไม่เจอ อาจหา Directory Listing หรือ File Manager Options แทน (อาจแตกต่างตามเวอร์ชั่น cPanel)
  4. เลือกโดเมนหรือโฟลเดอร์ที่ต้องการจัดการ (โดยปกติเป็น public_html หรือ subdomain folder)
  5. เลือก Disabled หรือ No Indexing เพื่อปิด Directory Listing
  6. หากต้องการเลือกไฟล์ index ที่ใช้เป็นค่า default ให้ใส่ชื่อไฟล์ เช่น index.html index.php home.html
  7. คลิก Save หรือ Update

ตั้งค่า Directory Listing ผ่าน .htaccess (วิธีอื่น)

ถ้า cPanel ของคุณไม่มี Index Manager GUI หรือต้องการควบคุมเฉพาะบาง subfolder คุณสามารถตั้งค่าผ่าน .htaccess ได้

ขั้นตอน:

  1. เชื่อมต่อกับ Hosting ผ่าน FTP หรือ File Manager ใน cPanel
  2. เลื่อนไปยังโฟลเดอร์ที่ต้องการป้องกัน (public_html หรือ subfolder อื่น)
  3. สร้างหรือแก้ไขไฟล์ .htaccess
  4. เพิ่มบรรทัดต่อไปนี้:
# ปิด Directory Listing

  Options -Indexes


# ตั้งค่าไฟล์ Index Default
DirectoryIndex index.html index.php home.html

อธิบายแต่ละบรรทัด:

5. บันทึกไฟล์ .htaccess

ไฟล์ Index ที่นิยม และลำดับที่ใช้

ไฟล์ index ที่เว็บเซิร์ฟเวอร์ค้นหาโดยปกติในลำดับนี้ (ขึ้นอยู่กับการตั้งค่า DirectoryIndex):

index.html        # HTML file (ไฟล์ static)
index.php         # PHP file (ไฟล์ไดนามิก)
index.htm         # HTML file (รูปแบบเก่า)
index.pl          # Perl script
index.asp         # ASP file
index.aspx        # ASP.NET file
default.html      # Default file ชื่อเก่า
home.html         # Home page alternative

หากคุณตั้ง DirectoryIndex เป็น index.html index.php Apache จะหา index.html ก่อน และถ้าไม่มีจึงหา index.php สำหรับโฟลเดอร์นั้น


ตรวจสอบว่า Directory Listing ทำงานถูกต้อง

หลังจากตั้งค่า Index Manager แล้ว ให้ทดสอบตามขั้นตอนต่อไปนี้:

# 1. ทดสอบจาก Web Browser — เข้าไปยัง URL ของโฟลเดอร์
#    https://yourdomain.com/subfolder/
#    ถ้าเห็นรายชื่อไฟล์ = Directory Listing ยังเปิด
#    ถ้าเห็น Error 403 หรือว่างเปล่า = Directory Listing ปิดได้

# 2. ตรวจสอบ .htaccess ว่าอยู่ในที่ที่ถูกต้อง
#    ใน File Manager ให้มองหา .htaccess ใน public_html
#    (หากมี Show Hidden Files เปิดอยู่)

# 3. ทดสอบ Options ที่กำหนดใน Apache
curl -I https://yourdomain.com/subfolder/

# 4. สร้างไฟล์ test.txt ลงใน subfolder และเข้าไป
#    https://yourdomain.com/subfolder/
#    ถ้าเห็นไฟล์ test.txt แสดง = Directory Listing ยังเปิด
#    ถ้าไม่เห็นรายชื่อไฟล์ = ปิดได้สำเร็จ

# 5. ตรวจสอบไฟล์ index ว่าใช้งานได้
#    สร้าง index.html ลงในโฟลเดอร์ แล้วเข้าไป
#    https://yourdomain.com/subfolder/
#    ควรเห็น index.html แสดงผล ไม่ใช่รายชื่อไฟล์
Tip: ใช้เบราว์เซอร์ DevTools (F12) ดู Response Headers ว่า Server ส่ง Header ไหน สามารถช่วยตรวจสอบว่า Apache กำหนดค่า .htaccess ถูกต้องหรือไม่

แก้ปัญหาที่พบบ่อย

Error: "Directory Listing ยังเปิดอยู่แม้ว่าตั้งค่า Options -Indexes แล้ว"

อาจเกิดจากนามสกุล .htaccess ไม่ถูกต้อง หรือ mod_rewrite ไม่เปิดใช้งาน

วิธีแก้:

Error: "เมื่อเข้าโฟลเดอร์ไม่เห็นไฟล์ index หรือปรากฏ Error 403"

อาจเกิดจาก DirectoryIndex ตั้งค่าไฟล์ที่ไม่มีจริง หรือเซิร์ฟเวอร์ปฏิเสธการเข้าถึง

วิธีแก้:

Error: "ไฟล์ .htaccess ไม่มีผลกระทบ หรือเกิด 500 Error"

อาจเกิดจากไวยากรณ์ .htaccess ผิด หรือบรรทัดคำสั่งขัดแย้งกัน

วิธีแก้:

Error: "ต้องการปิด Directory Listing เฉพาะ subfolder บางตัวเท่านั้น"

ถ้าต้องการปิด Listing ของ /subfolder1 แต่ปล่อยให้ /subfolder2 แสดง ต้องใส่ .htaccess ในแต่ละโฟลเดอร์

วิธีแก้: ใส่ .htaccess ที่มี Options -Indexes เฉพาะในโฟลเดอร์ที่ต้องการปิด นอกเหนือจากนี้ .htaccess ในโฟลเดอร์แม่ (parent directory) จะส่งผลให้ subfolder ทั้งหมด ตามไปด้วย

Error: "เมื่อเข้าโฟลเดอร์มี .htaccess ไฟล์โชว์ออกมา"

ถ้า Directory Listing ไม่ปิด และเบราว์เซอร์แสดง .htaccess ในรายชื่อไฟล์ แสดงว่า Options -Indexes ไม่ได้รับการรับรู้

วิธีแก้: ตรวจสอบว่า AllowOverride ใน Apache ตั้งค่าให้รับ FileInfo (ซึ่งเป็นการตั้งค่า default) ให้ติดต่อ Hosting Provider เพื่อยืนยัน


คำถามที่พบบ่อย

Q: ต่างกันอย่างไรระหว่าง Options -Indexes และการใช้ cPanel Index Manager?

A: ผลลัพธ์เหมือนกัน — ทั้งคู่ปิด Directory Listing ทำให้ไม่แสดงรายชื่อไฟล์เมื่อไม่มี index file ความต่างคือ Index Manager คือ GUI (ตัวเลือกคลิก) ที่ cPanel ให้เตรียมสำหรับผู้ใช้ที่ไม่คุ้นเคยกับ .htaccess ในขณะที่ .htaccess เป็นไฟล์ setting ของ Apache ที่เหมาะสำหรับผู้ที่ต้องการลึกซึ้งและ granular control มากกว่า

Q: ฉันต้องปิด Directory Listing ทั้งเว็บไซต์หรือแค่บาง subfolder?

A: ควรปิด Directory Listing ของทั้งเว็บไซต์เพื่อความปลอดภัยสูงสุด ใส่ .htaccess ของ public_html ที่ root ของเว็บไซต์ ทำให้ทุก subfolder ตามไปด้วย หากต้องการให้ subfolder บางตัวแสดง file list (เช่น public download folder) สามารถใส่ .htaccess ใน subfolder นั้นพร้อมกับ Options +Indexes เพื่อยกเลิก setting จาก parent directory ได้

Q: ถ้าปิด Directory Listing จะทำให้ผู้ใช้ไม่สามารถดาวน์โหลดไฟล์ได้หรือ?

A: ไม่ปิด Directory Listing เพียงแค่ซ่อนรายชื่อไฟล์เมื่อเข้าโฟลเดอร์ผ่าน URL โดยตรง หากผู้ใช้รู้ชื่อไฟล์และ URL ที่แน่นอน (เช่น https://yourdomain.com/download/myfile.zip) พวกเขายังสามารถดาวน์โหลดได้ปกติ เพียงแต่ไม่เห็นรายชื่อไฟล์อื่น ๆ ในโฟลเดอร์เท่านั้น

ถ้าคุณกำลังมองหา Hosting ที่รองรับ DirectAdmin เต็มรูปแบบพร้อมเครื่องมือจัดการเว็บไซต์ครบครัน ลองดู Hosting จาก asiagb.com ที่มีทีมซัพพอร์ตดูแลตลอด 24 ชั่วโมง