GORAGOD.com

freelance, web developer, web designer, hosting, domain name

เรื่อง .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=

เปลี่ยนเป็นแบบนี้ก็ไม่ได้ อยู่ดี งง มันเป็นที่อะไรครับ
07 ก.ย. 2553 10 14,569

^article\/([0-9]+)$

ลองดูครับ
#1


ก็ยังไม่ได้ครับ อาจารย์ เราต้องไปเขียน code php เพิ่มอย่างไหรหรือป่าว นอกจากการเขียน .htaccess ครับ


#2

จาก URL ที่ให้มาในตัวอย่าง ไม่มี .html นะครับ ดังนั้นเขียนแค่ที่ผมบอกก็น่าจะ ok

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 ไม่ใช่เทพที่จะแก้ไขส่วนนี้ให้ได้)
#3

ขอบคุณสำหรับคำตอบ แต่ก็ กินแห้วเหมือนเดิม 
#4

อ้างอิงจาก ความคิดเห็น #4ขอบคุณสำหรับคำตอบ แต่ก็ กินแห้วเหมือนเดิม 

ลองเอาตัวอื่นๆที่ไม่เกี่ยวข้องออกก่อนสิครับ ผมลองทดสอบคำสั่งข้างบนดูที่เครื่องผม มันสามารถทำงานได้อย่างแน่นอน

มีข้อควรระวังเรื่องนึงคือ ไฟล์และ path ต่างๆที่เกี่ยวข้อง จะอยู่ระดับเดียวกันคือที่ root ของ Server และ โฟลเดอร์ article ต้องไม่มีอยู่จริง บนระบบ
#5

ครับ ผมเอาไฟร์ .htaccess และ show_detail.php อยู่ใน root ระดับเดียวกันเลยครับ และผมก็ไม่ได้สร้าง โฟลเดอร์ article ครับ

จะเกี่ยวกับ chmode หรือป่าวครับ เราตั้งเป็นอะไรหรือยังไงครับ
#6

ไฟล์ที่ผมใช้ในการทดสอบ
.htaccess
RewriteEngine On
RewriteBase /
RewriteRule ^article\/([0-9]+)$ index.php?module=$ 1 [L,QSA]


index.php
<?php
  print_r($_GET);
?>

ทดลองเรียก http://localhost/article/01 ดูครับ

นอกนั้นไม่ต้องทำอะไรอีกเลย
#7

ผมเข้าใจผิดเองครับ
#8

#9


ได้หมดแล้วครับ ถ้าไม่มี อาจารย์ช่วยบอก คงเข้าใจอะไรผิดๆไปเยอะเลย



+10 ครับ  yes


#10
ความคิดเห็น
ไฟล์อัปโหลด ชนิด jpg, jpeg ขนาดไฟล์ไม่เกิน 2M
^