เทคนิค Re-direct โดย META tags และ Haeader


หน้าแรก PHP MySQL เกร็ดความรู้ เทคนิค Re-direct โดย META tags และ Haeader
ทุกครั้งที่เรามีการแก้ไขหรือเปลี่ยนแปลงที่อยู่ของโฮมเพจ สิ่งหนึ่งที่เราต้องทำก็คือแจ้งให้ผู้อ่านที่เปิดเข้ามายังเว็บเพจเดิม ทราบว่ามีการเปลี่ยนแปลงที่อยู่เกิดขึ้น เพื่อให้ทำการแก้ไข bookmark ไปยังที่อยู่ใหม่ ผมคิดว่าหลายๆ ท่านคงเคยเจอมาแล้ว ซึ่งมักจะเป็นข้อความทำนองนี้คือ “เราได้ทำการย้ายที่อยู่ของเว็บเพจใหม่ อีกสักครู่ท่านจะถูกนำไปที่อยู่ใหม่โดยอัตโนมัติ” วิธีการนี้เรียกว่า การ Re-direct สงสัยไหมครับว่าเขาทำยังไง?

วิธีการหนึ่งที่นิยมใช้ในการทำ Re-direct คือใช้ META tags ครับ รูปแบบโดยทั่วไปของ META tags มีอยู่ 2 แบบ คือ

รูปแบบที่ 1: <META HTTP-EQUIV=”name” CONTENT=”content”>
รูปแบบที่ 2: <META NAME=”name” CONTENT=”content”>

META tags นี้จะต้องอยู่ภายใน Head tag อีกที คือต้องอยู่ระหว่าง <HEAD> และ </HEAD> tag ครับ ถ้าสังเกตดูจะเห็นว่ารูปแบบทั้งสองแตกต่างกันที่แอตทริบิว HTTP-EQUIV และ NAME ซึ่งผมจะอธิบายต่อไปในภายหลัง

META tags มีไว้ใช้ทำอะไร?

META tags เป็น tags ที่เราใช้เพื่อใส่ตัวข้อมูล metadata เอาละสิครับแล้วเจ้า metadata คืออะไร? Metadata ก็คือ คำอธิบายข้อมูล หรือข้อมูลที่บอกรายละเอียดของข้อมูล (data about data) เพื่อให้เราทราบว่าข้อมูลที่เราได้รับนั้นมันคืออะไร

นอกจากทำให้เราเข้าใจแล้ว metadata ก็เป็นสิ่งที่ช่วยทำให้เครื่องคอมพิวเตอร์สามารถเข้าใจถึงข้อมูลที่มันได้รับด้วยเช่นกัน ตัวอย่างของ metadata ที่เราเห็นในชีวิตประจำวันก็คือ ป้ายหรือฉลากที่ติดอยู่บนภาชนะบรรจุอาหาร เครื่องดื่ม หรือสิ่งของต่างๆ เพื่อที่จะอธิบายข้อมูลว่าแต่ละรายการคืออะไร เพียงแค่เราอ่านฉลากก็ทำให้เราทราบถึงคุณลักษณะของสิ่งที่บรรจุอยู่ภายใน

metadata ไม่ได้ถูกคิดค้นมาเพื่อใช้งานกับเว็บเพจ เพราะแรกเริ่มเดิมทีนั้น metadata ได้ถูกใช้ในกลุ่มพัฒนาฐานข้อมูลที่อ้างอิงถึงสารสนเทศในห้องสมุดเพื่อให้บรรณารักษ์ได้ใช้ในการจัดการระบบห้องสมุด ซึ่งถ้าหากจะว่าไปแล้วเราก็อาจเปรียบเทียบได้ว่า เว็บเพจต่างๆ นั้นเปรียบเสมือนห้องสมุดโลกขนาดใหญ่ ด้วยเหตุผลนี้เองจึงได้มีแนวความคิดในการนำ metadata มาประยุกต์ใช้กับเว็บเพจต่างๆ

ถ้าเราลองพิจารณาดูเว็บเพจต่างๆ ในโลกจะเห็นว่ามีจำนวนมากมายมหาศาล นอกจากนี้แล้วยังมีการเปลี่ยนแปลงอยู่ตลอดเวลาตามใจของผู้ที่เป็นเจ้าของ ดังนั้นสามารถเรียกได้ว่าเครือข่าย world wide web ไม่มีโครงสร้างของข้อมูลข่าวสารแต่อย่างใด ซึ่งแตกต่างกับระบบของห้องสมุดที่มีการจัดระบบสิ่งพิมพ์ประเภทต่างๆ ไว้ให้เป็นหมวดหมู่เดียวกันในระบบที่เป็นมาตรฐานเดียวกันทั่วโลก คือ ระบบ Library of Congress Classification (LC) หรือ ระบบ Dewey Decimal System จะเห็นว่าเมื่อมีระบบจัดเก็บที่เป็นหมวดหมู่ก็จะสามารถทำให้ทำการสืบค้นได้อย่างสะดวกรวดเร็ว

META tags สามารถใช้ในการอธิบายว่าเว็บเพจนั้นเป็นอย่างไร มีเนื้อหาเกี่ยวข้องกับอะไร และอื่นๆ เพี่อความง่ายและรวดเร็วต่อการสืบค้นข้อมูลต่างๆ ในอินเทอร์เน็ต เช่น

<HEAD>
<TITLE>PHPConcept.com</TITLE>
<META HTTP-EQUIV=”Content-Type” CONTENT=”text/html; charset=tis-620″>
<META NAME=”keywords” CONTENT=”PHP”>
<META NAME=”description” CONTENT=”homepage about PHP Scripting language.”>
<META NAME=”author” CONTENT=”Wachira Promsaka Na Sakolnakorn”>
</HEAD>

จากตัวอย่างข้างต้นจะเห็นว่า แอตทริบิว NAME จะเป็นตัวที่บอกว่าเราต้องการกำหนดค่าให้กับอะไร และแอตทริบิว CONTENT นั้นเป็นค่าที่เราต้องการกำหนดให้นั่นเอง ส่วนแอตทริบิว HTTP-EQUIV นั้นเป็นการกำหนดค่าที่เทียบเท่า (equivalent) กับค่าของ HTTP headers ซึ่งโดยปกติแล้วเว็บเซิร์ฟเวอร์จะเป็นผู้ส่ง HTTP Response headers ให้แก่บราวเซอร์

จากการใช้ META tags นี้ก็จะทำให้บราวเซอร์ได้รับค่าที่เทียบเท่า HTTP headers ที่เรากำหนดขึ้นเองด้วย ซึ่งโดยทั่วไปแล้วบราวเซอร์ก็จะปฏิบัติตาม HTTP headers ที่มันได้รับ เช่น
<META HTTP-EQUIV=”expires” CONTENT=”Wed, 26 Feb 1997 08:21:57 GMT”>
เทียบเท่ากับ HTTP header คือ
Expires: Wed, 26 Feb 1997 08:21:57 GMT
ความหมายก็คือ กำหนดให้เว็บเพจนี้หมดอายุเมื่อวันพุธที่ 26 กุมภาพันธ์ 2546 เวลา 08:21:57 GMT

ถ้าอยากลองดูว่าทันทีที่เราเปิดดูเว็บไซต์อะไรสักอย่าง มีการส่ง HTTP Request Header ของบราวเซอร์ และรับข้อมูล HTTP Response header จากเซิร์ฟเวอร์ยังไงบ้าง ให้ลองดูที่เว็บนี้ครับ http://web-sniffer.net/ หรือเว็บนี้ครับ http://www.rexswain.com/httpview.html

เมื่อเราเรียดดูเว็บเพจที่มี META tags

เมื่อเราเรียกดูเว็บเพจผ่านทางเว็บบราวเซอร์ข้อมูลต่างๆ ของ META tags จะไม่ปรากฎให้เราเห็นบนจอ นอกเสียจากว่าเราจะเปิดดูซอร์สโค้ดของเว็บเพจนั้นๆ แล้วใครบ้างจะเป็นคนเห็นและใช้ข้อมูลต่างๆ เหล่านี้? ผู้ใช้ข้อมูลของ META tags ก็คือ search engine และตัวบราวเซอร์นั่นเอง ซึ่ง search engine บางตัวก็จะใช้ข้อมูลของ metadata ในการทำดัชนีเว็บไซต์ ดังนั้นการเลือกใช้คีย์เวิร์ดที่ถูกต้องเหมาะสมก็ส่งผลต่อการที่เว็บไซต์ของเราจะถูกพบโดย search engineได้ง่ายขึ้น

เคล็ดลับหนึ่งในการสร้างคีย์เวิร์ดเพื่อใช้ใน META tags ก็คือ ทำตัวเองให้เหมือนกับเป็นคนที่กำลังค้นหาเว็บไซต์ที่เกี่ยวของกับเว็บไซต์ของเรา ลองนึกดูว่าเขาจะใช้อะไรเป็นคีย์เวิร์ดในการค้นหาบ้าง คุณอาจจะลองถามเพื่อนๆ ดูก็ได้ หรืออีกวิธีหนึ่งก็ดูจากซอร์สโค้ดของเว็บไซต์ที่ใกล้เคียงกับเรา จากนั้นก็ค่อยเลือกใช้คีย์เวิร์ดที่ตรงตามความต้องการของเราจริงๆ อีกที

การ Re-direct โดยใช้ META tags

ในการ re-direct เว็บเพจโดยใช้ META tags นั้น เราต้องการกำหนดให้แอตทริบิว HTTP-EQUIV ให้มีค่าเท่ากับ Refresh โดยมีรูปแบบของคำสั่งดังนี้

<META HTTP-EQUIV=”Refresh” CONTENT=”3;URL=http://www.some.org/some.html”>
เทียบเท่ากับ HTTP header คือ
Refresh: 3;URL=http://www.some.org/some.html
ความหมายก็คือ เป็นการกำหนดให้ทำการเปิดเว็บเพจที่มี URL http://www.some.org/some.html ภายใน 3 วินาทีหลังจากที่แสดงเว็บเพจปัจจุบันเสร็จเรียบร้อยแล้ว เราสามารถกำหนดให้บราวเซอร์ทำการเปิดเว็บเพจใหม่ได้ทันทีโดยการกำหนดให้เป็นตัวเลขวินาทีเป็น 0 ตัวอย่างข้างล่างนี้คือตัวอย่างที่ใช้งานได้จริง

<html>
<head>
<meta http-equiv=”content-type” content=”text/html;charset=tis-620 ” />
<meta http-equiv=”refresh” content=”0;url=http://www.phpconcept.com/newpage/” />
<title>Refresh Page</title>
</head>
<body>
<p>This page has moved to</p>
<p><a href=”http://www.phpconcept.com/newpage/” mce_href=”http://www.phpconcept.com/newpage/”>

http://www.phpconcept.com/newpage/</a>
If you are not re-directed to the page automatically, please use the link above.</p>
</body>
</html>

การ Re-direct โดยใช้ PHP

ใน PHP มีคำสั่งที่ใช้ในการส่ง HTTP header คือ คำสั่ง header มีรูปแบบคือ
void header ( string string [, bool replace [, int http_response_code]])

การ Re-direct โดยใช้ PHP สามารถทำได้ 2 แบบคือ
1. ทำการ Re-direct ไปยังเว็บไซต์ใหม่ทันทีโดยใช้ location header มีรูปแบบคือ
<?
header(”location:http://www.phpconcept.com/newpage/”);
exit;
?>

2. ทำการ Re-direct ทันทีโดยใช้ refresh header มีรูปแบบคือ

ตัวอย่างนี้แสดงให้เห็นว่าเราสามารถทำการ Re-direct ไปยังเว็บเพจใหม่ได้โดยการกำหนดให้เวลามีค่าเป็น 0 วินาที
<?
header( ”refresh: 0; url=http://www.phpconcept.net/newpage/” );
?>

นอกจากนี้คุณยังสามารถเขียน url สั้นๆ ได้หากเป็นการ Re-direct ไปที่เว็บเซิร์ฟเวอร์เดียวกัน
<?
header( ”refresh: 5; url=/webdsn/” );
?>

<?
header( ”refresh: 3; url=/” );
?>

ข้อควรระวังก็คือการใช้คำสั่ง header() นี้จะต้องถูกเรียกใช้ก่อนที่จะมีการส่งค่าอื่นๆ เพื่อให้บราวเซอร์แสดงผล คุณจะไม่สามารถนำ HTML tags บรรทัดว่างๆ หรือแม้แต่กระทั่งช่องว่างเพียง 1 ช่องแทรกไว้ก่อนคำสั่งนี้
เช่นดังตัวอย่างต่อไปนี้

<html>
<?php
/* This will give an error. Note the output
* above, which is before the header() call */
header(”Location: http://www.example.com/”);
?>

คำสั่ง header() นี้สามารถใช้งานได้หลากหลายเช่น สามารถกำหนดให้เว็บเพจหมดอายุได้เช่นกัน คุณสามารถอ่านรายละเอียดเพิ่มเติมของคำสั่ง header() นี้ได้ที่ http://www.php.net/header ครับ



ขึ้นไปด้านบน