A-AA+then

ปัญหาโลกแตกของ mod_rewrite ของผมครับ

1,390
เรียนถาม อ. ดังนี้ครับ 

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

ผมต้องการทำให้ลิงค์ http://www.phungwit.net/dicp/index.php?process=addStd&title=เพิ่มข้อมูลนักเรียน
ให้เป็น http://www.phungwit.net/dicp/process/เพิ่มข้อมูลนักเรียน.html
และเวลาคลิกที่ลิงค์ก็ให้ url มันเปลี่ยนอัติโนมัติด้วยครับ

หรือท่านใดพอจะให้คำแนะนำช่วยเหลือได้ ก็ขอขอบพระคุณอย่างสูงครับ เพราะต้องนำโปรแกรมไปนำเสนอที่ สพม. สัปดาห์หน้าแล้วครับ

 

6 ความคิดเห็น

ไม่ใช่ว่า script ทุกตัวจะทำได้ครับ ซึ่งถ้าจะให้ทำแบบนั้นได้ ต้องออกแบบตั้งแต่ script ครับ ทำความเข้าใจเบื้องต้นดังนี้

1.URL ที่เป็น HTML เช่น http://www.phungwit.net/dicp/process/เพิ่มข้อมูลนักเรียน.html ถ้าจะให้ SE เห็นต้องเกิดจาก PHP หรือ HTML ครับ สังเกตุได้จากเมื่อ View Source แล้ว จะเห็นลิงค์แบบเดียวกับที่ต้องการให้ SE เห็น (SE จะเห็นตามที่ View Source เห็นเท่านั้น)
2.mod_rewrite จะทำหน้าที่แปลงจาก
http://www.phungwit.net/dicp/process/เพิ่มข้อมูลนักเรียน.html ให้เป็น http://www.phungwit.net/index.php?process=dicp&title=เพิ่มข้อมูลนักเรียน ได้เท่านั้น ซึ่งสิ่งที่จะแปลงได้ ต้องเป็นสิ่งที่มีอยู่ใน URL เท่านั้น สังเกต่จาก process,dicp และ เพิ่มข้อมูลนักเรียน
3.หน้าที่ที่เหลือ จะอยู่ที่ index.php ที่จะทำการอ่าน query ที่ส่งมา เพื่อประมวลผลต่อ ให้ได้หน้าเว็บที่ต้องการครับ
1

ยังงงๆ อยู่ครับ ที่ว่า
1.
URL ที่เป็น HTML เช่น http://www.phungwit.net/dicp/process/เพิ่มข้อมูลนักเรียน.html ถ้าจะให้ SE เห็นต้องเกิดจาก PHP หรือ HTML
หมายถึง ต้องมีไฟล์ เพิ่มข้อมูลนักเรียน.html อยู่จริงๆ ใช่หรือเปล่าครับ
2. 
ซึ่งสิ่งที่จะแปลงได้ ต้องเป็นสิ่งที่มีอยู่ใน URL เท่านั้น สังเกต่จาก process,dicp และ เพิ่มข้อมูลนักเรียน
ผมสงสัยว่า dicp เนี่ยมันเป็นไดเร็คทอรี่ที่มีอยู่จริงๆ แล้วตรง title เป็นสิ่งที่มีอยู่ใน URL หรือเปล่าครับ
3. ขอคำแนะนำในการเขียนสคริปให้มัน SE ด้วยครับ

สคริปที่ผมเขียน มีโครงสร้างดังนี้ครับ
ไฟล์ index.php จะเป็นไฟล์ควบคุมการแสดงผลหน้าเว็บทั้งหมด
ไฟล์ index.php จะ include ไฟล์ switch.php ซึ่งทำหน้าที่เรียกไฟล์ต่างๆ ตาม process ที่ระบุไว้ใน URL ซึ่งไฟล์นี้จะเป็นตัวที่ดึงไฟล์ที่มีอยู่จริงมาทำงานครับ
ส่วนตรง title นั้น ผมสร้างไว้เพื่อให้ไฟล์ index.php มันเอาไปแสดงบน titlebar ของเว็บบราวเซอร์ครับ ถึงไม่มี query ตัวนี้ ก็ไม่มีผลอะไรครับ

ถ้าผมเขียนประมาณนี้ มันพอจะทำ SEO ได้หรือเปล่าครับ

อ. ลองเข้าไปดูในโปรแกรมได้ครับ 
ยูสเซอร์และรหัสผ่าน คือ demo ครับ

ขอบคุณอีกครั้งครับ
2

1 ไม่จำเป็นครับ ไฟล์ตาม URL ไม่จำเป็นต้องมีอยู่จริงครับ ยกตัวอย่างนะครับ http://www.goragod.com/home.html ก้ไม่ได้มีอยู่จริงครับ แต่ mod_rewrite จะแปลง URL ข้างต้นเป็น http://www.goragod.com/index.php?module=home แทน ซึ่ง index.php จะทำการอ่าน module แล้วไปเรียกเนื้อหา home มาแสดงแทนครับ ลองสังเกตุดูนะครับ ในที่นี้ module คือ keword และ home คือหน้าที่ต้องการซึ่งได้มาจาก URL ครับ

2 ตามข้อ 1 ครับ

3 จริงๆแล้วในปัจจุบัน URL ที่ใช้งานอยู่ก้ไม่ได้เป็นปัญหาสักเท่าไรครับ เพราะปัจจุบัน SE ให้ความสำคัญที่ เนื้อหา title keyword เป็นหลักครับ

โครงสร้างของ script ก้ไม่ได้เป็นปัญหาแต่อย่างใดครับ ตราบใดที่มันยังทำงานได้อย่างที่ต้องการ ไม่ว่าจะใช้เทคนิคอะไร ก็สามารถทำได้ครับ เพราะสิ่งที่ต้องทำจริงๆหากต้องการคือ เข้าไปเปลี่ยนลิงค์ต่างๆของโค้ดทั้งหมดให้เป็นแบบที่ต้องการ แล้วค่อยใช้ mod_rewrite แปลง URL ที่ส่งมาให้เป็นแบบที่สคริปต์รู้จักครับ
3

ขอบคุณ อ. และเว็บไซท์แห่งนี้มากๆ ครับ จะพยายามหาวิธีทำให้ url มันน่ามองให้สำเร็จครับheartyes
4

ผมได้ปรับรูปแบบเมนูใหม่ตามที่ อ. แนะนำ และบางส่วนเริ่ม SEO แล้วครับ แต่มีข้อสงสัยดังนี้ครับ
บางเมนูที่มีการผ่านค่า query 2 ค่า เวลากำหนดใน .htaccess แล้ว CSS แสดงผลไม่ถูกต้องเกิดจากอะไร แล้วจะแก้ไขอย่างไรครับ

รบกวน อ. อีกครั้งครับ
5

ไม่แปลกครับเพราะมันอาจถูก rewrite ไปด้วย

การแก้ไขก็ง่ายนิดเดียว (แต่อาจแก้เยอะแยะ) คือต้องอ้าง path หรือ url ของไฟล์ทั้งหมดแบบ full path ครับ เช่น เคยใช้แบบนี้
<link rel=stylesheet href=style.css>
ลองนึกภาพว่าถ้าหน้าที่เรียกไฟล์นี้อยู่ที่ subfolder มันต้องหาไม่เจอเป็นแน่ การแก้ไขให้อ้างแบบนี้ครับ
<link rel=stylesheet href=http://www.goragod.com/skin/2013/style.css>
ให้ทำเช่นนี้กับทุกลิงค์นะครับ ไม่ว่าจะเป็น URL css หรือ รูปภาพ
6
^