Get Adobe Flash player

Laravel การนำ public folder ออกจาก url ให้เหลือเพียงแค่ domain

โดยปกติการติดตั้ง Laravel นั้นจะต้องติดตั้งด้านนอก public_html (Folder Web Root โดยทั่ว ๆ ไป) แล้วทำการ Config Web Server ให้ชี้ไปยัง Folder Public ของ Laravel แทนเพื่อให้ url เหลือเพียงแค่ domain เท่านั้น ดังภาพ

และการ Config Virtualhost ให้ชี้ไปที่ Folder public ของ Apache

แต่ในบางครั้งเราไม่สามารถ Config Apache หรือ Web Server ที่ใช้บริการอยู่ได้ ดังนั้นจึงต้องใช้วิธีการเปลี่ยน Pointer จาก Folder Laravel ให้ชี้ไปยัง Folder public แทน โดยวิธีการทำนั้นง่ายมาก เพียงแค่ 2 ขั้นตอนคือ

  1. Copy File .htaccess จาก Folder public ไปไว้ด้านนอก (Folder Laravel)
  2. เปลี่ยนชื่อไฟล์ server.php เป็น index.php

เพียงเท่านี้ ก็จะสามารถเข้าถึงเว็บได้โดยตรงโดยใช้เพียงแค่ domain บน url เช่น http://abc.com แทนที่จะเป็น http://abc.com/public แต่การใช้วิธีนี้ก็จะมีปัญหาใหญ่มาก ในด้านความปลอดภัยตามมาเพราะ ใน Folder Laravel นั้นมีไฟล์ Config ที่เป็น Text file อยู่ (.env) เราสามารถเข้าถึงได้ และดู Config หรือ Password ได้โดยตรง จำเป็นที่จะต้องปิดช่องโหว่ในส่วนนี้ โดยวิธีที่แนะนำคือการตั้งค่าเพิ่มใน File .htaccess ใน Folder Laravel โดยการ Config ให้ไม่อนุญาติให้เปิดอ่าน Extension env หรือ Extension อื่น ๆ ที่ส่งผลต่อความปลอดภัย ดังนี้

เพียงเท่านี้ก็จะไม่สามารถเปิดอ่านไฟล์ Config ได้โดยตรง