CodeIgniter กับปัญหา base_url() บนเครื่องที่ติดตั้ง IIS และ Apache หรือเว็บเซิร์ฟเวอร์ที่ IP ต่างกัน
CodeIgniter กับปัญหา base_url()
ปัญหานี้เกิดขึ้นหลังจากที่เปลี่ยนมาใช้ CodeIgnditer เวอร์ชั่น 3.1.6 (ก่อนหน้านี้ใช้เวอร์ชั่น 2 สามารถเรียก base_url() ได้ปกติ) ปรากฏว่าเวอร์ชั่นใหม่นี้ จะแสดง URL เป็นไอพี ตามที่ได้ตั้งไว้กับ IIS ซึ่งเป็นเซริฟเวอร์อีกตัว ทำให้โหลดไฟล์ JS, CSS ต่างๆไม่ได้
หลังจากค้นหาวิธีอยู่นานสองนาน ก็ได้คำตอบว่า
1. ปรับค่า $config['base_url'] ให้ตรงตาม project
2. เขียนโค้ดเพิ่มเติมโดยอ่านจาก $_SERVER
เมื่อรีเฟรชหน้าเว็บโปรเจ็กต์อีกครั้ง จะเห็นว่า Template แสดงผลได้ถูกต้อง และ ค่าที่ echo base_url() ออกมาตรงกับที่ช่อง URL ADDRESS
สำหรับส่วนที่ต้องแก้ไขนั้นอยู่ในไฟล์นี้
application/config/config.php
$potocal = 'http'.((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 's' : '');
$directory = str_replace(basename($_SERVER['SCRIPT_NAME']), '', $_SERVER['SCRIPT_NAME']);
$base_url = $potocal . '://'.$_SERVER['HTTP_HOST'] . $directory;
$config['base_url'] = $base_url;
:: ที่มา ::
CodeIgniter base_url(), link in localhost gives me to live server
https://stackoverflow.com/questions/29474848/codeigniter-base-url-link-in-localhost-gives-me-to-live-server
ความคิดเห็น
แสดงความคิดเห็น