A-AA+then

เรื่อง .htaccess clean url

1,853

    ท่านพี่เทพช่วยดูและแก้ไขให้ทีนะครับ ถ้าผิดหรือเขียนไม่ครบกรุณาบอกด้วยนะครับ
    
    พอดีผมอยากจะเปลี่ยน
    
    url  http://www.cornthai.com/show_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=
    
    เปลี่ยนเป็นแบบนี้ก็ไม่ได้ อยู่ดี งง มันเป็นที่อะไรครับ

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

^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

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

4

อ้างจากคำตอบที่ #4

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


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

มีข้อควรระวังเรื่องนึงคือ ไฟล์และ 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

    ขอ อีกนิดนะครับ อาจารย์ ทำไม css มันไม่ทำงานครับ
    
    เวลาเป็น http://localhost/CORN/article ทำงานปกติ
    แต่ ถ้าเป็น  http://localhost/CORN/article/54 หน้าจอดูไม่ได้เลยครับ เราจะเขียน .htaccess อย่างไร ครับ
    
    path css คือ css/style.css ครับ เราจะแก้ให้เป็นแบบไหนดีครับ

9

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

10
^