Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > บทความจากสมาชิก > Mod Rewrite (mod_rewrite) ด้วย Apache สร้าง URL Friendly รองรับ SEO ด้วย (.htaccess)



 
Clound SSD Virtual Server

Mod Rewrite (mod_rewrite) ด้วย Apache สร้าง URL Friendly รองรับ SEO ด้วย (.htaccess)

Mod Rewrite สร้าง URL Friendly รองรับ SEO ด้วย Module mod_rewrite ในยุคแห่งการแข่งขัน SEO เพื่อให้ได้อันดับการค้นหาของ Search Engine อย่าง Google ที่จะทำให้เว็บไซต์ติดอันดับการค้นหาอย่างรวดเร็ว และอันดับต้น ๆ ซึ่งผลการค้นหาเหล่านี้ทาง Google ไม่ได้อาศัยคนหรือเจ้าหน้าที่มาทำการจัดอันดับแต่อย่างใด แต่เป็นไปตามอัลกิริทึมของ Google ที่ถูกเขียน Logic ไว้อันซับซ้อนประกอบด้านตัวแปรมากกว่า 2 ล้านตัวแปร และปัจจัยอื่น ๆ ที่เป็นความลับของ Google ที่จะมีหลักการวิเคราะห์ให้คะแนน และจัดอันดับอัตโนมัติ และแม้กระทั่ง Search Engine เจ้าอื่น ๆ ก็ใช้เทคนิคในรูปแบบเช่นเดียวกัน และบทความนี้จะให้ความสำคัญกับ Search Engine ของ Google เป็น Seach Engine อันดับหนึ่งของโลก และมีผู้ใช้มากที่สุด เกือบ 98% (สถิติในประเทศ)

Google Bot


วิธีการที่ Search Engine เหล่านี้เข้ามาจัดการกับเง็บไซต์ของเรานั้น เว็บไซต์เหล่านี้จะต้องทำการสำเนาข้อมูลในหน้านั้น ๆ เข้าไปในระบบฐานข้อมูลของตัวเอง โดยการส่ง bot (Google bot) มาเก็บข้อมูลตามเว็บไซต์ต่าง ๆ ใช้วิธีไต่มาตามลิ้งค์ และทำสำเนาข้อมูล พร้อมกับการให้คะแนน ข้อมูลเนื้อหาเหล่านั้นด้วย เพื่อพร้อมจะแสดงผลในการค้นหาจากผู้ใช้ และเวลาที่ bot เหล่านี้มาเก็บข้อมูล จะใช้วิธีการไต่และอ่านไปตาม URL หลายเว็บได้ออกแบบ URL แบบเป็นแบบ Dynamic URL

เช่น
www.thaicreate.com/view_detail.php?id=123

วิธีนี้ ไม่่ได้ช่วยบ่งบอกว่า URL นี้เกี่ยวข้องกับอะไร การได้คะแนนของ SEO ก็น้อยลงตามไปด้วย แต่ถ้าเราใช้ URL

เช่น
www.thaicreate.com/ajax/ajax-tutorial-basic/

หรือ

www.thaicreate.com/ajax/ajax-tutorial-basic.html


เมื่อ bot เข้ามาเก็บข้อมูลก็จะทราบได้ทันทีแปลความหมายได้เลยว่า URL นี้เป็นเนื้อหาเกี่ยวกับบทความ Ajax และการสอน Ajax แบบ Basic ซึ่งจะได้คะแนน SEO ที่มากขึ้น รวมทั้งอันดับการค้นหาก็จะดีขึ้นไปด้วย และวิธีนี้ทาง Google ก็ได้แนะนำหลักการปฏิบัติแบบนี้เช่นเดียวกัน เทคนิคนี้ถูกใช้แพร่หลายไปยังเว็บไซต์ต่าง ๆ เป็นเทคนิคการเพิ่ม Keyword เข้าไปใน URL ที่ได้รับความนิยมอย่างมาก เพราะได้ผลมีผลดีทั้งในรูปแบบของ SEO และผู้ใช้ก็เข้าใจวัตถุประสงค์ของ URL เช่นเดียวกัน

เพิ่มเติม
การทำ URL Friendly เพื่อรองรับ SEO นั้น เป็นแค่องค์ประกอบหนึ่งที่จะช่วยให้อันดับการค้นหาดีขึ้นเท่านั้น และยังมีองค์ประกอบอีกมากมาย และบางครั้งการทำ SEO ด้วย URL มากจนเกินไปก็มีผลเสียต่อเว็บไซต์มากเช่นเดียวกัน สำหรับพื้นฐานการทำ SEO สามารถอ่านคำแนะนำได้จากบทความนี้

การทำ SEO กับแนวทางการเขียนโปรแกรมในยุคการแข่งขัน SEO (Search Engine)









การทำ URL SEO Friendly จะต้องทำอย่างไร???
ถ้าคุณสร้างเว็บไซต์ด้วย HTML ซึ่งเป็น Static Content ก็ไม่ใช่เรื่องยากอะไรที่จะทำแบบนั้น ก็เพียงสร้างโฟเดอร์ตามโครงสร้างและสร้างชื่อไฟล์ให้อยู่ในรูปแบบที่ต้องการ ก็เป็นการเสร็จสิ้น แต่ในความเป็นจริงเว็บไซต์ส่วนมากจะเป็นแบบ Dynamic หรือมีการเพิ่มลบข้อมูลตลอดเวลา เช่น การเพิ่มข้อมูลใน MySQL ด้วย PHP การเพิ่ม ตอนที่แสดงผลก็จะมีการอ้างอิง ID ข้องข้อมูลขั้น ๆ และ PHP ก็เอา ID เพื่อไปเลือกข้อมูลจาก MySQL มาแสดงอีกที เช่น

http://localhost/viewdetail.php?ID=1234

ซึ่งวิธีด้วยิวธีนี้เองเราจะทำการแปลง URL เหล่านี้ให้อยู่ในรูปแบบของ SEO Friendly เช่น

http://localhost/1234/

แต่ในหลักการ SEO ที่ถูกต้องจริง ๆ แล้ว URL เหล่านี้ควรจะเป็น Keyword ของขทความ ซึ่งใน MySQL ที่จัดเก็บควรจะเพิ่ม Column ที่เป็น Keyword เข้าไปด้วย และแทนการใช้ ID ซึ่งจะได้เป็นแค่ตัวเลขโดยไม่ได้สื่อถึงวัถตุประสงค์แต่อย่างใด เช่น

http://localhost/viewdetail.php?ID=1234&Keyword=ajax-tutorial


ได้ URL ใหม่เป็น

http://localhost/1234/ajax-tutorial/


URL ใหม่ที่สวยงามน่าคลิก และเหมาะสมต่อ SEO อย่างยิ่ง


เริ่มต้นการทำ Mod Rewrite กับ Apache mod_rewrite Module
ตามที่ได้เกริ่นไว้ในย่อหน้าแรก Mod Rewrite จะใช้บน Apache ทำงานอยู่บนไฟล์ .htaccess (ไฟล์นี้จะไว้สำหรับเขียนพวก Rewrite Rule ต่าง ๆ ลงในเว็บไซต์ และจะต้องจัดเก็บไว้ใน Root ของ เว็บ หรือถ้าอยู่ใน Sub Folder ก็จะต้องเก็บไว้ใน Sub นั้นด้วย) ฉะนั้นใน Apache Web Server นั้นจะถูกใช้ร่วมกับ PHP บทความนี้ก็จะทดสอบกับ PHP เช่นเดียวกัน และในขั้นแรกเราจะต้องตรวจสอบว่า Apache Web Server นั้นรองรับ mod_rewrite หรือไม่ ด้วยการใช้ phpinfo);

เพิ่มเติม
เนื่องจาก mod_rewrite นั้นจะทำงานในรูปแบบอ้างจาก root เพราะฉะนั้นในบทความนี้จะสร้าง root เว็บขึ้นมาใหม่ เพื่อความไม่สับสนเมื่อรันใน Sub Folder โดยจะใช้ URL ว่า

http://localhost:8081/


ซึ่งเปรียบเหสมือนเว็บไซต์หนึ่ง ๆ เมื่อนำไปใช้งานจริง

สำหรับการสร้าง Port ใหม่ใน Apache บน localhost สามารถอ่านได้จากบทความนี้

Apache httpd Create New VirtualHost (Create New Port)


โดยสร้างเป็น Port ที่ 8081 และ Root Document อยู่ที่ C:/Appserv/www/modrewrite/

httpd.conf
Listen 8081
<VirtualHost localhost:8081>
DocumentRoot C:/Appserv/www/modrewrite/
</VirtualHost>


ทดสอบการทำงานของ Port ใหม่

Apache Mod Rewrite URL SEO

ในรูปยังไม่มีไฟล์อะไรเป็นโฟเดอร์ว่างเปล่า

ย้ำเดียวจะงง ว่าการสร้าง Port ใหม่นี้เพื่อทดสอบเท่านั้น กรณีที่ไปใช้งานจริงไม่ต้องสร้างแต่อย่างใด หรือว่าจะใช้ผ่าน http://localhost/ เลยก็ได้ แต่ Path จะต้องเก็บไว้ที่ C:/Appserv/www/








ขั้นที่ 1 ตรวจสอบว่า Apache Web Server สามารถใช้ mod_rewrite ได้หรือไม่ ด้วยกาใช้ phpinfo();

phpinfo.php
<?
phpinfo();
?>


จัดเก็บไว้ที่ C:\Appserv\www\modrewrite\phpinfo.php จากนั้นทดสอบดูรายละเอียดของ phpinf() ได้จาก

http://localhost:8081/phpinfo.php


Apache Mod Rewrite URL SEO

ดูในส่วนของ apache2handler และ Loaded Modules ว่ามี mod_rewrite อยู่หรือไม่ จากในตัวอย่างกฏว่าไม่มี ซึ่งวิธีแก้ไขจะต้องไปเปิดในไฟล์ httpd.conf (กรณีบน Host จริงให้แจ้งไปยังผู้ให้บริการ)

httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so


ให้เพิ่มแถว ๆ ที่เป็น LoadModule ลองใช้การค้นหา ซึ่งในตัวที่เป็น Default จะมีการเปิดปิดไว้หลายตัว ดังรูป การเปิดคือการเอาเครื่องหมาย # ออก หลังจากนั้นก็ Restart Apache ซะ 1 รอบ

Apache Mod Rewrite URL SEO

การแก้ไขและเปิด mod_rewirte ด้วยการเพิ่ม mod_rewrite.so บน apache

Apache Mod Rewrite URL SEO

จากนั้นก็ทดสอบเรียก phpinfo() อีกครั้งหนึ่ง ก็จะปรากฏคำว่า mod_rewrite ซึ่งตอนนี้สามารถใช้งานได้แล้ว


ขั้นที่ 2 เขียนไฟล์ .htaccess เพื่อเขียน Rewrite Rule ลงในเว็บไซต์ ตามที่ได้เกริ่นไว้ในหัวย่อหน้าก่อนนี้ หลังจากเปิดให้ Apache สามารถรองรับ Module ของ mod_rewrite ได้แล้ว การทำงานต่าง ๆ ต่อไปก็เป็นหน้าที่ของไฟล์ .htaccess ซึ่งเป็นไฟล์ที่ทำหน้าที่รับคำสั่งจาก เว็บไซต์ เพื่อส่งให้ Apache แปลงคำสั่งและส่งผลลัพธ์กลับมา โดยไฟล์ .htaccess จะต้อถูกตัดเก็บไว้ใน Root ของเว็บไซต์ ซึ่งในที่นี้จะต้องเก็บไว้ที่

C:\Appserv\www\modrewrite\.htaccess


Apache Mod Rewrite URL SEO

หรือกรณีที่ Path อยู่ใน Sub ของ Folder ก็จะต้อง นำไฟล์นี้ไปเก็บไว้ใน Sub โฟเดอร์เช่นเดียวกัน และในกรณีที่ใช้ .htaccess อยู่ใน Sub Folder จะต้องเพิ่ม AllowOverride All ใน httpd.conf เข้าไปด้วยครับ เช่น

httpd.conf
<Directory "C:/Appserv/www/modrewrite/">

AllowOverride All

</Directory>



การเริ่มต้นคำสั่ง Rewrite จะเริ่มต้นด้วย

.htaccess
RewriteEngine on


ตัวอย่าง 1 เปลี่ยนจาก /viewdetail.php?id=1234 เป็น /view/1234/

รูปแบบ

http://localhost:8081/viewdetail.php?id=1234


ในไฟล์ viewdetail.php เราจะได้ค่า $_GET["id"] = 1234;

ต้องการเปลี่ยนเป็น

http://localhost:8081/view/1234/


เขียน RewriteEngine เป็น

.htaccess
RewriteEngine On

RewriteRule ^view/([0-9]+)/$ viewdetail.php?id=$1
RewriteRule ^view/([0-9]+)$ /view/$1/ [R]


viewdetail.php
<?
echo "id=".$_GET["id"];
?>


เมื่อพิมพ์ URL ว่า http://localhost:8081/view/1234/

Apache Mod Rewrite URL SEO

ใน php สามารถใช้การ $_GET["id"] เพื่อใช้งานได้

คำอธิบาย
RewriteRule ^view/([0-9]+)/$ viewdetail.php?id=$1 (เมื่อมีการรับค่าในรูปแบบ /view/1234/ ให้เรียกไฟล์ viewdetail.php?id=$1 พร้อมกับส่งค่า $1 คือตำแหน่งที่ 1 = ([0-9]+) )
RewriteRule ^view/([0-9]+)$ /view/$1/ [R] (ตัวนี้ตรวจสอบรูปแบบ /view/1234 และแทนที่ /view/1234/ (Slash) ให้อัตโนมัติ)



ตัวอย่าง 2 เปลี่ยนจาก /viewdetail.php?id=1234 เป็น /view/1234.html

รูปแบบ

http://localhost:8081/viewdetail.php?id=1234


ในไฟล์ viewdetail.php เราจะได้ค่า $_GET["id"] = 1234;

ต้องการเปลี่ยนเป็น

http://localhost:8081/view/1234.html


เขียน RewriteEngine เป็น

.htaccess
RewriteEngine On

RewriteRule ^view/(.*).html /viewdetail.php?id=$1


viewdetail.php
<?
echo "id=".$_GET["id"];
?>


เมื่อพิมพ์ URL ว่า http://localhost:8081/view/1234.html

Apache Mod Rewrite URL SEO

ใน php สามารถใช้การ $_GET["id"] เพื่อใช้งานได้

รูปแบบอื่น ๆ เช่น

/viewdetail.php?id=1234 เป็น /view/detail-1234.html

RewriteEngine On

RewriteRule ^view/detail-(.*).html /viewdetail.php?id=$1



/viewdetail.php?id=1234 เป็น /view/details-1234/

RewriteEngine On

RewriteRule ^view/details-([0-9]+)/$ viewdetail.php?id=$1
RewriteRule ^view/details-([0-9]+)$ /view/$1/ [R]




ตัวอย่าง 3 เปลี่ยนจาก /viewdetail.php?id=1234 เป็น /view-1234.html

รูปแบบ

http://localhost:8081/viewdetail.php?id=1234


ในไฟล์ viewdetail.php เราจะได้ค่า $_GET["id"] = 1234;

ต้องการเปลี่ยนเป็น

http://localhost:8081/view-1234.html


เขียน RewriteEngine เป็น

.htaccess
RewriteEngine On

RewriteRule ^view-(.*).html /viewdetail.php?id=$1


viewdetail.php
<?
echo "id=".$_GET["id"];
?>


เมื่อพิมพ์ URL ว่า http://localhost:8081/view-1234.html

Apache Mod Rewrite URL SEO

ใน php สามารถใช้การ $_GET["id"] เพื่อใช้งานได้





ตัวอย่าง 4 เปลี่ยนจาก /viewdetail.php?id=1234&keyword=ajax-tutorial เป็น /1234/ajax-tutorial.html

รูปแบบ

http://localhost:8081/viewdetail.php?id=1234&keyword=ajax-tutorial


ในไฟล์ viewdetail.php เราจะได้ค่า $_GET["id"] = 1234; และ $_GET["keyword"] = ajax-tutorial;

ต้องการเปลี่ยนเป็น

http://localhost:8081/1234/ajax-tutorial.html


เขียน RewriteEngine เป็น

.htaccess
RewriteEngine On

RewriteRule ^(.*)/(.*).html /viewdetail.php?id=$1&keyword=$2


viewdetail.php
<?
echo "id=".$_GET["id"];
echo "<br>";
echo "keyword=".$_GET["keyword"];
?>


เมื่อพิมพ์ URL ว่า http://localhost:8081/1234/ajax-tutorial.html

Apache Mod Rewrite URL SEO

ใน php สามารถใช้การ $_GET["id"] เพื่อใช้งานได้


รูปแบบอื่น ๆ เช่น

/viewdetail.php?id=1234&keyword=ajax-tutorial เป็น /1234/ajax-tutorial/

RewriteEngine On

RewriteRule ^(.*)/(.*)/$ /viewdetail.php?id=$1&keyword=$2


Google Bot

เพิ่มเติม
สำหรับบทความนี้เป็นเพียงแนะนำพื้นฐานการใช้ Mod Rewrite ของ Apache Module ซึ่งการประยุกต์ใช้กับ PHP และ MySQL เพื่อให้ได้เห็นตัวอย่างและแนวทางการทำไปใช้งานจริง สามารถอ่านได้จากบทความตัดไป หรือคลิกได้จากบทความที่เกี่ยวข้อง ที่อยู่ท้ายของบทความ

ระวัง Error
การแก้ไขไฟล์ .htaccess ค่อนข้างจะต้องมีความระมัดระวังเพระาถ้าหาก Syntax ไม่ถูกต้อง ก็อาจจะทำให้เว็บไซต์ Error ทั้งเว็บเลยก็เป็นได้ ตาม Error นี้

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, [email protected] and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Apache/2.2.4 (Win32) PHP/5.2.3 Server at localhost Port 8081


สำหรับการเขียนรูปแบบอื่น ๆ อยากให้ลองศึกษา URL นี้
http://httpd.apache.org/docs/current/mod/mod_rewrite.html


เพราะความสามารถของ .htaccess นั้นสามารถเขียนได้หลากหลาย เช่นการเปลี่ยนแปลงค่า config ซึ่ง php.ini บางตัว หรือการตรวจสอบ Web Browser ต่าง ๆ ก็สามารถทำได้เช่นเดียวกัน



บทความอื่น ๆ ที่เกี่ยวข้อง
Go to : สร้าง URL Rewrite และ PHP ฐานข้อมูล MySQL Database เพื่อ SEO บน Apache mod_rewrite Module
Go to : Apache Using 404 Error URL Rewrite - SEO Friendly URL for PHP
Go to : การทำ SEO กับแนวทางการเขียนโปรแกรมในยุคการแข่งขัน SEO (Search Engine)
Go to : ติดตั้ง Google PageRank (PR) ให้กับ Google Chrome และ Mozilla Firefox
Go to : IIS mod_rewrite/Url Rewrite (404 Error) URL - SEO Friendly URL for ASP and ASP.NET


   
Share
Bookmark.   

  By : TC Admin
  Article : บทความเป็นการเขียนโดยสมาชิก หากมีปัญหาเรื่องลิขสิทธิ์ กรุณาแจ้งให้ทาง webmaster ทราบด้วยครับ
  Score Rating :
  Create Date : 2012-06-13
  Download : No files
Sponsored Links
ThaiCreate.Com Forum


Comunity Forum Free Web Script
Jobs Freelance Free Uploads
Free Web Hosting Free Tools

สอน PHP ผ่าน Youtube ฟรี
สอน Android การเขียนโปรแกรม Android
สอน Windows Phone การเขียนโปรแกรม Windows Phone 7 และ 8
สอน iOS การเขียนโปรแกรม iPhone, iPad
สอน Java การเขียนโปรแกรม ภาษา Java
สอน Java GUI การเขียนโปรแกรม ภาษา Java GUI
สอน JSP การเขียนโปรแกรม ภาษา Java
สอน jQuery การเขียนโปรแกรม ภาษา jQuery
สอน .Net การเขียนโปรแกรม ภาษา .Net
Free Tutorial
สอน Google Maps Api
สอน Windows Service
สอน Entity Framework
สอน Android
สอน Java เขียน Java
Java GUI Swing
สอน JSP (Web App)
iOS (iPhone,iPad)
Windows Phone
Windows Azure
Windows Store
Laravel Framework
Yii PHP Framework
สอน jQuery
สอน jQuery กับ Ajax
สอน PHP OOP (Vdo)
Ajax Tutorials
SQL Tutorials
สอน SQL (Part 2)
JavaScript Tutorial
Javascript Tips
VBScript Tutorial
VBScript Validation
Microsoft Access
MySQL Tutorials
-- Stored Procedure
MariaDB Database
SQL Server Tutorial
SQL Server 2005
SQL Server 2008
SQL Server 2012
-- Stored Procedure
Oracle Database
-- Stored Procedure
SVN (Subversion)
แนวทางการทำ SEO
ปรับแต่งเว็บให้โหลดเร็ว


Hit Link
   







Load balance : Server 03
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่