background

Laravel : วิธีการทำ Sub-Domain จาก username ของผู้ใช้

7 months ago ◦ 1,815 Views

Laravel : วิธีการทำ Sub-Domain จาก username ของผู้ใช้

Laravel : วิธีการทำ Sub-Domain จาก username ของผู้ใช้

บทความนี้ขอเล่าถึงเทคนิคการทำ การเรียกข้อมูลผู้ใช้จาก Sub-Domain สำหรับโปรเจคที่ใช้ Laravel 5.6 ในการพัฒนาครับ เริ่มกันเลย


จัดการโดเมนก่อน

เข้าไปที่หน้าจัดการโดเมนในส่วนของ DNS ให้เพิ่ม Record ใหม่ แบบ CNAME ตั้งชื่อเป็น * และใส่ค่าเป็น @ ตามตัวอย่างนี้


ตั้งค่า Server Name

ขอยกตัวอย่างจาก nginx ให้เข้าไปใส่ *.yourdomain.com ตรง server_name เพื่อบอกให้ server ของเราสามารถรับ Sub-Domain ที่เรียกเข้ามาได้ทั้งหมด

server {
    ....
    server_name yourdomain.com *.yourdomain.com;
    ....
}


จัดการ Route

มาที่เว็บของเรา ตัวอย่างนี้เราจะสร้างกลุ่ม Route::group ในไฟล์ routes/web.php เพื่อให้ Routes ทำงานเมื่อมีการเว็บเรียกจาก Sub-Domain ชื่ออะไรก็ได้เข้ามาแล้วเอา subdomain ไปหาว่าเป็น username ของใคร

Auth::routes();
Route::group(array('domain' => '{subdomain}.ideagital.com'), function () {
 
    Route::get('/', function ($subdomain) {
 
        $name = DB::table('users')->where('username', $subdomain)->first();
 
        dd($name);
 
    });
   
});


อัพเว็บขึ้น Production เพื่อทดสอบเรียก Sub-Domain

จะเห็นตอนผลลัพธ์เมื่อเรียกจาก user-a.ideagital.com ก็จะแสดงข้อมูลของ user-a ของเราได้แล้ว


ปล. สำหรับใครที่ใช้ฟังก์ชั่น asset() อาจจะเจอปัญหาเกี่ยวกับ URL เพราะฟังก์นี้จะ return ค่าจากโดเมน current ที่เราเรียก เช่น user-a.ideagital.com มันก็จะ return มาเป็น https:://user-a.ideagital.com/path/your/asset แต่เราต้องการให้เป็น https:://ideagital.com/path/your/asset ปัญหานี้อาจต้องเปลี่ยนจากใช้ฟังก์ชั่น asset() เป็นการใส่ /path/your/asset เข้าไปตรง ๆ เลยครับ



#laravel #sub-domain #tutorial

View count: 1,815
  • avatar
  • Save Pongsiri ศิลปินด้านพัฒนาซอฟต์แวร์ มีเป้าหมายคือพัฒนาตัวเองให้ยืดหยุ่นที่สุด ชอบความเรียบง่าย,ดนตรี,กีฬา และแมว