ปัญหาโลกแตกของ mod_rewrite ของผมครับ
เรียนถาม อ. ดังนี้ครับ
ผมเขียนโปรแกรม โปรแกรมหนึ่งสำหรับใช้งานที่โรงเรียนครับ ปัญหามีอยู่ว่า ผมต้องการทำให้มันเป็นมิตรกับเซิร์สเอ็นจิ่น โดยใช้ mod_rewrite แต่พยายามหลายๆ ครั้งแล้ว ศึกษาจากเว็บไทยและเว็บนอกหลายๆ เว็บ รวมถึงเว็บ goragod.com ด้วยครับ แต่ก็ไม่สำเร็จสักทีครับ ตอนนี้งงเป็นไก่ตาแตกแล้วครับ
ผมต้องการทำให้ลิงค์ http://www.phungwit.net/dicp/index.php?process=addStd&title=เพิ่มข้อมูลนักเรียน
ให้เป็น http://www.phungwit.net/dicp/process/เพิ่มข้อมูลนักเรียน.html
และเวลาคลิกที่ลิงค์ก็ให้ url มันเปลี่ยนอัติโนมัติด้วยครับ
หรือท่านใดพอจะให้คำแนะนำช่วยเหลือได้ ก็ขอขอบพระคุณอย่างสูงครับ เพราะต้องนำโปรแกรมไปนำเสนอที่ สพม. สัปดาห์หน้าแล้วครับ
ผมเขียนโปรแกรม โปรแกรมหนึ่งสำหรับใช้งานที่โรงเรียนครับ ปัญหามีอยู่ว่า ผมต้องการทำให้มันเป็นมิตรกับเซิร์สเอ็นจิ่น โดยใช้ mod_rewrite แต่พยายามหลายๆ ครั้งแล้ว ศึกษาจากเว็บไทยและเว็บนอกหลายๆ เว็บ รวมถึงเว็บ goragod.com ด้วยครับ แต่ก็ไม่สำเร็จสักทีครับ ตอนนี้งงเป็นไก่ตาแตกแล้วครับ
ผมต้องการทำให้ลิงค์ http://www.phungwit.net/dicp/index.php?process=addStd&title=เพิ่มข้อมูลนักเรียน
ให้เป็น http://www.phungwit.net/dicp/process/เพิ่มข้อมูลนักเรียน.html
และเวลาคลิกที่ลิงค์ก็ให้ url มันเปลี่ยนอัติโนมัติด้วยครับ
หรือท่านใดพอจะให้คำแนะนำช่วยเหลือได้ ก็ขอขอบพระคุณอย่างสูงครับ เพราะต้องนำโปรแกรมไปนำเสนอที่ สพม. สัปดาห์หน้าแล้วครับ
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. 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 ครับ
3 จริงๆแล้วในปัจจุบัน URL ที่ใช้งานอยู่ก้ไม่ได้เป็นปัญหาสักเท่าไรครับ เพราะปัจจุบัน SE ให้ความสำคัญที่ เนื้อหา title keyword เป็นหลักครับ
โครงสร้างของ script ก้ไม่ได้เป็นปัญหาแต่อย่างใดครับ ตราบใดที่มันยังทำงานได้อย่างที่ต้องการ ไม่ว่าจะใช้เทคนิคอะไร ก็สามารถทำได้ครับ เพราะสิ่งที่ต้องทำจริงๆหากต้องการคือ เข้าไปเปลี่ยนลิงค์ต่างๆของโค้ดทั้งหมดให้เป็นแบบที่ต้องการ แล้วค่อยใช้ mod_rewrite แปลง URL ที่ส่งมาให้เป็นแบบที่สคริปต์รู้จักครับ
บางเมนูที่มีการผ่านค่า query 2 ค่า เวลากำหนดใน .htaccess แล้ว CSS แสดงผลไม่ถูกต้องเกิดจากอะไร แล้วจะแก้ไขอย่างไรครับ
รบกวน อ. อีกครั้งครับ
การแก้ไขก็ง่ายนิดเดียว (แต่อาจแก้เยอะแยะ) คือต้องอ้าง path หรือ url ของไฟล์ทั้งหมดแบบ full path ครับ เช่น เคยใช้แบบนี้
ลองนึกภาพว่าถ้าหน้าที่เรียกไฟล์นี้อยู่ที่ subfolder มันต้องหาไม่เจอเป็นแน่ การแก้ไขให้อ้างแบบนี้ครับ
ให้ทำเช่นนี้กับทุกลิงค์นะครับ ไม่ว่าจะเป็น URL css หรือ รูปภาพ