ไปดู report ของเว็บ อักษรย่อ.com มา พบว่ามี broken link เยอะมาก เนื่องจากมีการปรับ structure url ใหม่ ทำให้ link เก่า ๆ ที่เป็นที่จดจำของผู้ใช้บางอันไม่มีอยู่บนเว็บเวอร์ชันใหม่
ถ้าปล่อยทิ้งไว้อย่างนั้นคงไม่เป็นผลดีแน่ จึงได้เวลาแก้ไขมันให้ไปถูกที่ถูกทางละ
นั่งนึกดูมันก็พอจะมีหลายวิธีที่แก้ไขเรื่องนี้ได้นะ เช่น ทำ redirect rule ใน code ไว้เลย หรือจะให้ web server จัดการให้
การทำ redirect rule ไว้ใน code มันก็จะมีข้อกวนใจหน่อยนึง ตรงที่ต้อง build source code แล้ว deploy ใหม่นั่นแหละ <- ตัดทิ้ง
เลยลองมาดูกันว่า web server พอจัดการยังไงได้บ้าง
Redirect URLs with Nginx
ใน Nginx จะมี map module ที่เปิดให้เราทำการกำหนดค่าเป็นคู่ ๆ ได้ จึงสามารถเอามาประยุกต์ใช้งานได้
nginx.conf
map_hash_bucket_size 256; # ใส่เพื่อให้รองรับ url ยาว ๆ ได้
map $request_uri $new_uri {
include /etc/nginx/url.map;
}
server {
listen 80;
server_name _;
...
if ($new_uri) {
return 301 $new_uri;
}
...
}
url.map
/old-url /new-url;
/deep/old-url /new-url;
...
เรียบร้อย ลองทดสอบกันได้เลย
- https://www.อักษรย่อ.com/cmb
- https://www.อักษรย่อ.com/sd-ram-ย่อมาจากอะไร
- https://www.อักษรย่อ.com/skr