ปกติ Laravel ถ้าเรา Upload ไฟล์ขึ้นตรงๆ บน Share Hosting หรือ VPS ก็จะมี Path ชื่อ "public" แสดงติดมาด้วยใน URL จะเป็นลักษณะนี้ https://www.domain.com/public
วิธีทำให้พาธ "public" ไม่ให้แสดงนั้น น่าจะมีหลายวิธี แต่ขอเลือกวิธีนี้แล้วกันครับ คือการ แยกโฟลเดอร์ Laravel ออกมาเลย
โครงสร้างโฟลเดอร์บน Hosting
Linux Hosting ทั่วไปลักษณะโฟลเดอร์จะเก็บไฟล์ไว้ที่ public_html (บางแห่งอาจจะเป็น httpdocs หรือ wwwroot)
ทีนี้ให้เราสร้างโฟลเดอร์นึงเพื่อเก็บตัว Engine ของ Laravel ไว้ในระดับเดียวกับโฟลเดอร์ public_html เลย ณ ที่นี้ผมสร้างโฟลเดอร์เป็น "laravel"
โครงสร้างจะเป็นดังนี้:
/home/user/
├── public_html/ ← ไฟล์จากโฟลเดอร์ public ของ Laravel
└── laravel/ ← ไฟล์ทั้งหมดของ Laravel ยกเว้นโฟลเดอร์ public
ขั้นตอนการอัพโหลด
-
เข้าไปในโฟลเดอร์
laravelและ Upload ไฟล์ทั้งหมดของ Project เข้าไป ยกเว้นโฟลเดอร์public -
บน Hosting ให้เราเข้าไปในโฟลเดอร์
public_htmlแล้วใน Project เราก็เข้าไปในโฟลเดอร์publicจากนั้น Upload ไฟล์ทั้งหมดจากโฟลเดอร์ public เข้า public_html
แก้ไขไฟล์ index.php
แก้ไขไฟล์ index.php ใน public_html ซึ่งจะมีการอ้างไฟล์อยู่ 2 จุด
เดิม:
require __DIR__.'/../vendor/autoload.php';
// ...
$app = require_once __DIR__.'/../bootstrap/app.php';
แก้ไขเป็น โดยอ้างโฟลเดอร์ "laravel" ที่เราสร้างไว้ก่อนหน้านี้:
require __DIR__.'/../laravel/vendor/autoload.php';
// ...
$app = require_once __DIR__.'/../laravel/bootstrap/app.php';
ทีนี้เวลาเราเรียก URL ก็ไม่ต้องใส่ /public ไว้ห้อยท้ายอีกแล้ว เพื่อความสวยงาม