Narisa.com: Beautiful URL - Narisa.com

Jump to content

Subscribe to Bomber's Blog        RSS Feed

Beautiful URL

6 Comments
แรงบันดาลใจเรื่อง URL งามๆนี่ผมได้แรงบันดาลใจจากการได้อ่านบทความ User-Centered URL Design ของคุณ Jesse James Garrett ในบทความกล่าวไว้ว่าปัจจุบัน จากการ Boom ของ CMS ทำให้ URL ในการเข้าถึง Content นั้นกลายเป็นของแสลงสำหรับ User ไป การจะเข้าถึง Resource สักอย่างจะมี URL ที่ยาวเหยียด ยากต่อการอ่าน ยากต่อการจำ ยากต่อการพิมพ์ และยากต่อการแจกจ่ายตัวอย่าง URL ที่ได้เห็นกันบ่อยๆhttp:// www.globeandmail.com/servlet/GIS.Servlets.HTMLTemplate?current_row=3&tf=tgam/search/tgam/SearchFullStory.html&cf=tgam/search/tgam/SearchFullStory.cfg&configFileLoc=tgam/config&encoded_keywords=dvd&option=&start_row=3&start_row_offset1=&num_rows=1&search_results_start=1&query=dvdซึ่งนับวัน URL บน Internet ก็เริ่มหมดประโยชน์ลงไปเรื่อยๆ ทั้งๆที่มันควรจะมีประโยชน์มากๆคุณ Jesse ยกตัวอย่าง URL ที่ดีว่าควรจะสั้น จำง่าย และสื่อความหมาย สามารถเดาใดไม่ยากนักเช่นhttp:// www.apple.com/powerbook/specs.htmlhttp:// www.adobe.com/products/photoshop/newfeatures.htmlบทความนี้ผมอ่านเมื่อต้นปี 2005 แต่ตัวบทความเองเขียนตั้งแต่ปี 2002 หลังจากได้อ่านบทความนี้ผมก็เริ่มให้ความสำคัญของ URL เอามากๆ ถึงแม้จะสนใจและให้ความสำคัญ แต่การกระทำกับไม่เป็นอย่างนั้น เนื่องจากงานที่เร่งมากๆ ดังนั้นผมจีงต้องปล่อยให้งานปัจจุบันยังใช้ URL ในลักษณะเดิมๆ ซึ่งยาวเหยียดและเต็มไปด้วย Parameters ต่อไปปัญหาผ่านมาหลายเดือน งานเสร็จสิ้น และมีเวลากลับมามองงานของตัวเอง จุดที่ผมอยากเปลี่ยนแปลงที่สุดคือ URL นั่นเอง ผมจึงเริ่มศึกษาและลองหาวิธีการที่จะทำให้ URL สวยๆ โดยที่ไม่กระทบต่อระบบปัจจุบันตามหลักการแล้ว URL สวยๆที่เข้าถึง resource ได้โดยตรง นั่นหมายถึง เราจะต้องมี File ซึ่งเป็น resource นั้นจริงๆ ซึ่งในความเป็นจริงในระบบที่ User Generate Content และ CMS นั่นแทบจะเป็นไปไม่ได้ หรือถ้าจะทำจริงๆ ก็คงต้องใช้วิธี Generate HTML file ขึ้นมาจริงๆ ซึ่งผมมองว่ามันไม่ค่อยจะดีนัก เพราะนั่นหากต้องมีการปรับเปลี่ยนแก้ไขหน้าตาของ Web Page หรือเปลี่ยนแปลงข้อมูลอะไร หมายถึงต้อง Generate File ใหม่ทั้งหมด ซึ่งถ้าระบบมี File น้อยๆคงไม่เป็นไร แต่สำหรับระบบขนาดใหญ่คงจะเป็นไปไม่ได้ นอกจากปัญหาเรื่องเปลี่ยนแปลงแก้ไขแล้ว ผมยังมองเห็นปัญหาของจำนวน File ใน Disk ซึ่งจะมีจำนวนมหาศาล และจะก่อให้เกิดปัญหาด้านอื่นๆตามมา ไม่ว่าจะเป็นเรื่องของ Maintanance เช่นกัน Backup หรือ Structure ของตัว Directory เองSolution ที่ 1 URL Rewriterจากปัญหาข้างต้น ผมจึงมาลอง Feature ของ Web Server ดูว่าจะช่วยอะไรได้บ้าง ซึ่งก็พบว่ามีเรื่องของ URL Rewriter อยู่ Feature URL Rewriter ของ Web server สามารถตอบโจทย์ได้ระดับหนึ่ง หลักการคือเราสามารถเขียน Regular Expression ขึ้นมาเพื่อให้ Web Server ใช้ในการ Match ซึ่งหาก URL นั้นๆ Match กับ Regular Expression ที่กำหนดมันจะทำการสร้าง URL ขึ้นมาใหม่และทำการ Redirect User ไปยัง URL นั้นๆเช่นhttp://minihome.truelife.com/soothi ก็จะได้เป็น http://minihome.true...php?user=soothiวิธีนี้เราจะได้ URL สวยๆให้ User สามารถจำได้ง่ายๆ และแจกจ่ายได้สะดวก แต่ปัญหาก็ยังคงอยู่คือ สุดท้ายแล้ว URL ที่ปรากฏบน Browser ก็จะเป็น URL ที่เป็น Parameter อยู่นั่นเอง และ User หลายๆคนก็ใช้วิธีก copy url ที่ปรากฏบน Browser ไปแจกจ่ายที่อื่น ซึ่งผิด conceptปัญหานี้คงแก้ไม่ยากนัก หากเลือกใช้ J2EE เพราะสามารถเขียนเป็น Servlet แล้วใช้ ServletMapping ช่วย หรือจะใช้ ServletFilter ก็สามารถทำได้ แต่สำหรับ PHP แล้วทำแบบนั้นไม่ได้Solution ที่ 2 HTTP 404ดังนั้นผมจึงเริ่ม Search Google เพื่อลองดูว่ามีใครคิด Solution ด้านนี้ไว้บ้างแล้ว ก็ได้พบ Solution ที่น่าสนใจนั่นก็คือ การใช้ 404Solution นี้มีใช้กันอย่างแพร่หลายพอสมควร ขนาดนี้มีคนกำหนดเป็น Framework เลยด้วยซ้ำไป วิธีการก็ง่ายๆเป็น Feature มาตรฐานของ Web Server อยู่แล้วนั่นก็คือปกติ Web Server จะมีที่ให้เรา Map ว่าหากเกิด HTTP404 คือหา Physical File บน Server ไม่เจอมันจะทำการ Forward Request ของ User ไปที่ file หนึ่งซึ่งเราสามารถกำหนดได้ว่าจะเป็น File ไหน เช่นใน Apache เราสามารถกำหนดได้ที่ httpd.conf ว่าErrorDocument 404 "handler_404.php"วิธีนี้ทำให้เราสามารถได้ URL สวยๆโดยที่ไม่ต้อง redirect เราสามารถเขียน Parser URL ของ User ได้ง่ายๆเช่น<?php$request_uri = $_SERVER['REQUEST_URI'];$directories = split('/', $request_uri);...?>วิธีนี้บน Browser ก็จะเห็น URL เป็นเช่นเดิมไม่เปลี่ยนแปลง ซึ่งก็คือ http:// minihome.truelife.com/soothi สรุปและนี่คือ Solution สำหรับทำ URL สวยๆ ประโยชน์ของ URL สวยๆที่สำคัญคือ1. User จำง่าย เดาได้2. เราสามารถเปลี่ยน technology บน server ได้ง่ายๆเพราะไม่มี file extenstion บน URLคิดว่าคงมีประโยชน์สำหรับหลายๆคนนะครับ

6 Comments On This Entry

Page 1 of 1

siros 

10 November 2005 - 12:27 PM
ขอบคุณครับ น่าสนใจมาก
ประเด็นนี้ เป็น ประเด็นที่น่าหนักใจ สำหรับ Web framework บางตัว ... อย่าง Tapestry นอกจาก URL จะไม่สวยแล้ว (จริงๆ ต้องเรียกว่า เละเทะ ถึงจะถูก) ตัว framework ยังไม่ expose URL ให้เราด้วย นั่นคือ เราไม่ต้องแตะต้อง URL เลย ... ทุกๆ อย่างมองเป็น event หมด แล้วตัว framework จะ generate URL ให้เอง ... ถ้าเป็น web application ที่เป็น form data processing ก็คงไม่น่ามีปัญหาอะไร
แต่ถ้าเป็นงานที่เป็น Content ... คงมีปัญหาอย่างที่คุณ Bomber บอกมาแน่ๆ เลย
ไม่ทราบว่ายังมี Solution อื่นๆ นอกจากนี้ อีกมั้ยครับ ... จะหาได้จาก keyword อะไรบ้างครับ? (นึกไม่ออกครับ)
0

Bomber 

10 November 2005 - 01:08 PM
ผม search ด้วยคำว่า URL Rewriter และ Movable URL ครับ ก็ได้ Link มาพอสมควร

จริงๆยังมีอีกหลาย Solution ครับ ถ้าเป็นของ Java เขาแนะนำให้ใช้ ServletFilter กัน ส่วน Solution อื่นๆก็มีการทำพวกกำหนด File Extention เป็น *.* ก็มี
0

siros 

11 November 2005 - 06:43 PM
ขอบคุณครับ ... ต้องลองหาดูหน่อยซะแล้ว
0

scorpio 

18 November 2005 - 04:47 PM
ขอบคุณ คุณ Bomber ครับ
ผมได้อ่านเจอบทความอีกบทความที่น่าสนใจเกี่ยวกับการใช้ mod_rewrite คิดว่าน่าจะพอเป็นประโยชน์ได้บ้างครับสำหรับท่านที่ใช้ Apache HTTP Server

* " http://www.mambotemplates.com/index.php?op...rtid=4&Itemid=3 "
0

nati921 

07 March 2007 - 04:20 PM
สำหรับ Solution ที่ 2 HTTP 404 อะครับ
แล้วต้องทำไงต่ออะครับ หรือว่าจะหาข้อมูลได้ที่ไหน
เวลา search ใช้ keyword อะไรหรือครับ

รบกวนด้วยนะครับ
เพราะ hosting ผม เป็น IIS แล้ว ทำวิธี 1 ไม่ได้อะครับ
0

Bomber 

07 March 2007 - 04:30 PM

nati921, on Mar 7 2007, 04:20 PM, said:

สำหรับ Solution ที่ 2 HTTP 404 อะครับ
แล้วต้องทำไงต่ออะครับ หรือว่าจะหาข้อมูลได้ที่ไหน
เวลา search ใช้ keyword อะไรหรือครับ

รบกวนด้วยนะครับ
เพราะ hosting ผม เป็น IIS แล้ว ทำวิธี 1 ไม่ได้อะครับ

ลองไปดูตาม link นี้นะครับ http://www.petefreit...om/item/286.cfm
0
Page 1 of 1

September 2010

S M T W T F S
   12 3 4
567891011
12131415161718
19202122232425
2627282930  

0 user(s) viewing

0 Guests
0 member(s)
0 anonymous member(s)

Recent Entries