Tag Archive ไดเร็กทอรี่

เขียนหน้า 404 แบบง่ายๆ

เป็นธรรมดาที่เวลาเว็บมีอายุนานๆ แล้วจะมีการที่เพิ่มลดหน้าเพจ มีภาพที่โดนลบออก มีโดนย้ายตำแหน่ง รวมถึงพวก hacker ที่พยามจะมาเดินเล่นหา file ต่างๆ ที่อาจจะสามารถใช้รวบรวมข้อมูลไปทำอันตรายต่างๆได้ หลายๆเว็บจึงทำหน้า 404 not found ไว้ เพื่อ

  • บอกว่าไฟล์นี่ไม่มีแล้วนะ
  • พา user ไปหน้า search ข้อมูล หรือหน้าที่รวมความช่วยเหลือ
  • ป้องกันไม่ให้มาค้นหาไฟล์อะไรง่ายๆ โดยการเดาชื่อไฟล์ เพราะจะได้หน้านี้กลับไป เป็นการถ่วงเวลาอย่างหนึ่งให้ระบบตรวจจับการบุกรุกสามารถเห็นได้ง่ายขึ้น

    สร้างไฟล์ .htaccess ไว้ใน folder หลักของเว็บ หรือ directory ที่ต้องการ โดยเขียน

    RewriteEngine on
    
    RewriteRule (.*) 404.html [L]
    

    ถ้ามีคำสั้่งอื่นๆ อยู่แล้ว ก็ให้ใส่คำสั่ง RewriteRule (.*) 404.html [L] ไว้ล่างสุด และเขียนไฟล์ 404.html ไว้เนื้อหาภายในก็เปลี่ยนไปตามจุดประสงค์ที่ต้องการ จะแค่ภาพ 404 ที่มีตามเน็ตก็ได้

default file รูปด้วย .htaccess

ทำระบบสมาชิกโดยแต่ละ user จะมีภาพประจำตัว โดยเก็บในรูปแบบ \datas\peoples\id ของ user.jpg แต่บางคน (ส่วนใหญ่) ไม่ส่งภาพมา แต่ในหลายๆ หน้าจะมีจุดที่แสดงภาพสมาชิก

มี 2 ทางเลือกคือ

  • ใช้คำสั่ง file_exists ตรวจสอบดูว่ามีไฟล์นี้รึเปล่า ถ้ามีก็เอาภาพไปแสดง ถ้าไม่ก็แสดงภาพเป็นเงาดำๆ ให้ดูไป
  • อีกวิธีคือ แสดงภาพเหมือนว่ามีไฟล์นี้จริงๆ แต่ถ้าหาไฟล์ไม่เจอก็ให้ server ไปดึงไฟล์ดีฟอล์ตมาแสดง โดยใน code ไม่ต้องตรวจสอบอะไรเลย

วิธีการคือ สร้างไฟล์ .htaccess ใน \datas\peoples\ โดยมีเนื้อหาคือ

RewriteEngine on

# If requested resource exists as a file or directory go to it
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule (.*) - [L]

# Else rewrite requests for non-existent .jpg to default.jpg
RewriteRule (.jpg$) default.jpg [L]

# Else rewrite requests for non-existent resources to 404.html
RewriteRule (.*) ../404.html [L]

เมื่อมีการเรียกใช้ภาพ .jpg มาใน folder \datas\peoples\ ตัว apache จะไปหาก่อนว่าไฟล์นั้นมีหรือเปล่า ถ้าไม่มีก็จะใช้ไฟล์ default.jpg มาแสดงแทน แค่นี้ก็ไม่ต้องตรวจสอบทุกจุดที่แสดงภาพแล้วว่ามีภาพจริงๆ หรือเปล่า

ถ้าใช้ git อ่านเรื่อง git: ไม่สนไฟล์ในโพลเดอร์นี้ ยกเว้น ด้วย