เรื่อง .htaccess clean url
ท่านพี่เทพช่วยดูและแก้ไขให้ทีนะครับ ถ้าผิดหรือเขียนไม่ครบกรุณาบอกด้วยนะครับ
พอดีผมอยากจะเปลี่ยน
url http://www.cornthai.com/...ow_detail.php?ar=107
ให้เป็น http://www.cornthai.com/article/107 อ่ะครับ
ผมเขียนแบบนี้ผิดตรงไหนหรือไม่ครบก็ช่วยบอกทีนะครับ งมกับมันนานล่ะ มือใหม่ๆๆๆ
RewriteEngine On
Options +FollowSymLinks
#RewriteCond %{HTTP_HOST} !^www\.
#RewriteRule (.*) http://www.cornthai.com/ [R=301,L]
RewriteRule ^corn-([0-9]+).html$ index.php
RewriteRule ^article-([0-9]+).html$ show_ar.php
RewriteRule ^news-(.*).html$ show_news.php
RewriteRule ^product-(.*).html$ show_product.php
RewriteRule ^article_detail-(.*).html$ show_detail.php?ar=
RewriteRule ^news_detail-(.*).html$ show_news_detail.php?nid=
RewriteRule ^product_detail-(.*).html$ show_detail_product.php?pid=
เปลี่ยนเป็นแบบนี้ก็ไม่ได้ อยู่ดี งง มันเป็นที่อะไรครับ
พอดีผมอยากจะเปลี่ยน
url http://www.cornthai.com/...ow_detail.php?ar=107
ให้เป็น http://www.cornthai.com/article/107 อ่ะครับ
ผมเขียนแบบนี้ผิดตรงไหนหรือไม่ครบก็ช่วยบอกทีนะครับ งมกับมันนานล่ะ มือใหม่ๆๆๆ
RewriteEngine On
Options +FollowSymLinks
#RewriteCond %{HTTP_HOST} !^www\.
#RewriteRule (.*) http://www.cornthai.com/ [R=301,L]
RewriteRule ^corn-([0-9]+).html$ index.php
RewriteRule ^article-([0-9]+).html$ show_ar.php
RewriteRule ^news-(.*).html$ show_news.php
RewriteRule ^product-(.*).html$ show_product.php
RewriteRule ^article_detail-(.*).html$ show_detail.php?ar=
RewriteRule ^news_detail-(.*).html$ show_news_detail.php?nid=
RewriteRule ^product_detail-(.*).html$ show_detail_product.php?pid=
เปลี่ยนเป็นแบบนี้ก็ไม่ได้ อยู่ดี งง มันเป็นที่อะไรครับ
ลองดูครับ
ก็ยังไม่ได้ครับ อาจารย์ เราต้องไปเขียน code php เพิ่มอย่างไหรหรือป่าว นอกจากการเขียน .htaccess ครับ
RewriteRule ^article\/([0-9]+)$ show_detail.php?ar=$ 1 [L,QSA]
($ และ 1 ติดกันนะครับ ผมเขียนเว้นกันเพราะมันชอบหาย)
ซึ่งมันจะรับ URL ในรูป xxx.com/article/10 แปลงเป็น xxx.com/show_detail.php?ar=10
ซึ่งในตอนรับค่าไม่ต้องแก้ไขอะไรครับ เพราะ ar=10 เป็นตัวแปรเดิม
แต่ที่ต้องเปลี่ยนโค้ดก็คือ ต้องแก้ไขโค้ด ให้ URL ต่างๆ เป็นในรูป article/id ด้วยตัวเองครับ (.htaccess ไม่ใช่เทพที่จะแก้ไขส่วนนี้ให้ได้)
ลองเอาตัวอื่นๆที่ไม่เกี่ยวข้องออกก่อนสิครับ ผมลองทดสอบคำสั่งข้างบนดูที่เครื่องผม มันสามารถทำงานได้อย่างแน่นอน
มีข้อควรระวังเรื่องนึงคือ ไฟล์และ path ต่างๆที่เกี่ยวข้อง จะอยู่ระดับเดียวกันคือที่ root ของ Server และ โฟลเดอร์ article ต้องไม่มีอยู่จริง บนระบบ
จะเกี่ยวกับ chmode หรือป่าวครับ เราตั้งเป็นอะไรหรือยังไงครับ
.htaccess
RewriteBase /
RewriteRule ^article\/([0-9]+)$ index.php?module=$ 1 [L,QSA]
index.php
print_r($_GET);
?>
ทดลองเรียก http://localhost/article/01 ดูครับ
นอกนั้นไม่ต้องทำอะไรอีกเลย
ได้หมดแล้วครับ ถ้าไม่มี อาจารย์ช่วยบอก คงเข้าใจอะไรผิดๆไปเยอะเลย
+10 ครับ