ป้องกัน hotlink ด้วย .htaccess

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



ตัวอย่างการใช้งานไฟล์ .htaccess


RewriteEngine on

RewriteCond %{HTTP_REFERER} !^http://colorpack.net.*$ [NC]

RewriteCond %{HTTP_REFERER} !^http://www.colorpack.net.*$ [NC]

RewriteCond %{HTTP_REFERER} !^http://colorpack.net:80.*$ [NC]

RewriteCond %{HTTP_REFERER} !^http://www.colorpack.net.com:80.*$ [NC]

RewriteRule .*[Jj][Pp][Gg]$|.*[Gg][Ii][Ff]$|.*[Pp][Nn][Gg]$ http://www.colorpack.net/hotlink.html



จาก ตัวอย่างด้านบน เมื่อมีการเรียกไฟล์ *.jpg *.gif *.png apache จะตรวจสอบว่า referer ของ browser ที่เรียกไฟล์ดังกล่าว มาจากเว็บใด ถ้า referer ไม่ตรงตามที่เรากำหนดไว้ คือ www.picohosting.com apache จะ redirect คำร้องดังกล่าวไปหาไฟล์ www.colorpack.net/hotlink.html แทน ในไฟล์ hotlink.html ก็แล้วแต่ว่าเราจะเขียนอะไรลงไป เช่นบอกไปว่าห้ามทำ hotlink มาหาไฟล์ดังกล่าวเป็นต้น

RewriteEngine on

RewriteCond %{HTTP_REFERER} !^http://colorpack.net.*$ [NC]

RewriteCond %{HTTP_REFERER} !^http://www.colorpack.net.*$ [NC]

RewriteCond %{HTTP_REFERER} !^http://colorpack.net:80.*$ [NC]

RewriteCond %{HTTP_REFERER} !^http://www.colorpack.net:80.*$ [NC]

RewriteRule .*$ http://www.colorpack.net/hotlink.html


สำหรับตัวอย่างด้านบน apache คำร้องขอจาก browser เมื่อมีการเรียกไฟล์ *.* และจะตรวจสอบ referer ว่าตรงตามที่เรากำหนดหรือไม่ ถ้าไม่ถูกต้องก็จะ redirect ไปที่ไฟล์ hotlink.html แทน