5 ví dụ về Rewrite URL dùng htaccess thông dụng



Xin chào các bạn, nhất là những bạn đã đang và sẽ là một webmaster 🙂

Bạn là một WM ắt hẳn phải chú trọng đến việc quảng bá website để thu hút traffic. Có rất nhiều yếu tố để đạt được yêu cầu đó mà trong khuôn khổ bài viết hạn hẹp này Việt Coding không thể nói hết. Việt Coding chỉ nói đến việc “viết lại” (rewrite) đường dẫn web (url) của bạn cho đẹp, cho dễ nhớ, nói chung là thân thiện. Thân thiện với cả visitor và các search engine. Bạn nghĩ sao nếu phải gõ tay hoặc copy dòng địa chỉ này paste vào trình duyệt :

/index.php?option=com_content&view=article&id=25:bai-hc-t-cuc-sng&catid=1:news-tonghop&joscclean=1&comment_id=473#josc473

hay bạn chỉ muốn gõ đơn giản như vầy:

/article/25/bai-hoc-tu-cuoc-song/

Tôi có cần trả lời giùm bạn không nhỉ ? 😀

Bài viết dưới đây sẽ hướng dẫn các bạn sử dụng sức mạnh của tập tin .htaccess, qua đó viết lại đường dẫn website của bạn một cách thân thiện (friendly url).

Hy vọng bạn chưa quên một bài viết khác của Việt Coding cũng nói về .htaccess : Bảo vệ băng thông webblog của bạn bằng htaccess ?

URL Rewriting - Một kỹ thuật quan trọng giúp cho SEO

URL Rewriting - Một kỹ thuật quan trọng giúp cho SEO - (Nguồn : Internet)

Đây là 5 ví dụ thông dụng nhất:

1. product.php?id=12 —> product-12.html

Đây là một ví dụ cực kỳ cơ bản của rewrite url, thường dùng để che dấu đuôi PHP:

RewriteEngine on
RewriteRule ^product-([0-9]+)\.html$ product.php?id=$1

2. product.php?id=12 —> product/ipod-nano/12.html

Một SEO chuyên nghiệp luôn biết khéo léo hiển thị từ khoá chính trên URL. Như trong ví dụ sau, URL hiển thị tên của sản phẩm chính:

RewriteEngine on
RewriteRule ^product/([a-zA-Z0-9_-]+)/([0-9]+)\.html$ product.php?id=$2

3. Non www URL —> www URL

Nếu bạn muốn khi visitor gõ vào trình duyệt vietcoding.com thì được chuyển thẳng vào www.vietcoding.com thì cấu hình như sau:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^vietcoding\.com$
RewriteRule (.*) http://www.vietcoding.com/$1 [R=301,L]

4) vietcoding.com/user.php?username=xyz —> vietcoding.com/xyz

Nếu website của bạn có một lượng lớn thành viên (như mạng xã hội, diễn đàn), đây là một cách rất hay để rút gọn liên kết cho thành viên dễ nhớ

RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ user.php?username=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ user.php?username=$1

5) Chuyển domain vào cấp thư mục:

Trong quá trình phát triển website, luôn luôn có sự thay đổi (về mã nguồn, cơ sở dữ liệu, cấu trúc site,…). Ví dụ vietcoding.com trước giờ vẫn chạy ở thư mục gốc (root), giả sử vì một lý do nào đó, Việt Coding cần dùng root cho việc khác và muốn chuyển webblog hiện tại vào thư mục /blog/ thì sao ?


RewriteEngine On
RewriteCond %{HTTP_HOST} ^vietcoding\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.vietcoding\.com$
RewriteCond %{REQUEST_URI} !^/blog/
RewriteRule (.*) /blog/$1

Thế là xong ! Từ nay mọi truy vấn đến vietcoding.com hoặc www.vietcoding.com đều được redirect vào vietcoding.com/blog

Tất nhiên, URL rewriting rất đa dạng và phong phú, tuỳ sự sáng tạo của từng webmaster mà sẽ cho ra những url độc đáo không đụng hàng, ví dụ như:

http://abc.com/Music/#List_Album2,-1,1
http://abc.com/Products/#IPhone|3GS|32G

[help]Đều rất đặc trưng phải không nào ? Bạn còn chờ gì nữa ?
[/help]

About Author

Tuấn Anh

Là một người đam mê lập trình, hiện tập trung mảng phát triển ứng dụng web dựa trên nền tảng của WordPress. Đồng thời, nhằm đạt sự trọn vẹn trong công việc freelance, tôi đang học đồ hoạ, để có thể tự mình thiết kế layout, logo và những thứ khác liên quan đến đồ họa. Mục tiêu vài năm tới: Tôi sẽ là Full Web Developer = Graphics Design + Coding. Vietcoding Blog viết về WordPress, chia sẻ kinh nghiệm, mẹo vặt, viết plugin, làm theme và ôm ấp ý tưởng viết một Web Application Framework dựa trên WordPress. Đồ hoạ là chuyên mục đang được chuẩn bị trong tương lai.



77 thoughts on “5 ví dụ về Rewrite URL dùng htaccess thông dụng

  1. Tinh says:

    Thực ra cái này đã có sẵn trong wordpress permalink và các hosting đã support nên chỉ cần chọn cách hiển thị là nó tự cập nhật. Dù sao, thủ thuật này cũng khá hữu ích cho những ai sử dụng free host hay pai host mà không hỗ trợ tính năng tự động này
    .-= Tinh´s last blog ..HostGator Released New Affiliate System! =-.

    1. 5 cách trên đây áp dụng chung cho mọi ứng dụng web mà bác ! Chắc tại em không ghi rõ làm bác hiểu nhầm 😀

      P/s: Sao cái comment này của bác vào Spam nhở 😮

  2. Hi bác Việt Cốt! Bài hay quá. Nhưng cái này, em nghĩ hơi “cao xa”. Em thấy một số bài viết của bạn nên theo hướng popular hơn để anh em có thể áp dụng tốt.

    Chúc bác vui!

    @Bác Tỉnh là chuyên gia spammer mà.
    .-= Giáng Châu´s last blog ..9 điều “giết chết” tình yêu =-.

    1. Hi,

      Bài viết trên rất đơn giản, ứng dụng không có gì quá khó khăn cả 🙂

      1. dưngin says:

        Mình comment bao nhiu cấp thì trang web bị đơ nhỉ ^^

  3. LeHienTinh says:

    Em sài wordpress nên chỉ cần dùng permarklink là xong hihi:)
    .-= LeHienTinh´s last blog ..Cơ hội sở hữu Thesis 1.7 =-.

  4. sim so dep says:

    Khá chuẩn? ngoài ra còn có thêm một số ví dụ về redirect 301 302 các bác tìm hiểu thêm nhé?
    .-= sim so dep´s last blog ..Số kép abab………………………….abab số kép =-.

  5. Tran Quang says:

    trứoc kia em để link dạng ethongtin.net/index.php/link-bai-viet mà bây giờ chuyển sang dạng ethongtin.net/ten-bai-viet thì có ảnh hưưỏng gì đến google index ko hả anh ?
    .-= Tran Quang´s last blog ..Flash Gallery Miễn Phí Hỗ Trợ Tự Động Tạo Thumbnail =-.

    1. Theo Việt Coding, việc chuyển cấu trúc link từ dạng này sang dạng khác phải có một chiến lược 😀

      – Lựa chọn cấu trúc link chuẩn nhất, ngắn gọn nhất, thuận tiện cho cả người dùng và cả các search engine.
      – Mỗi khi thay đổi phải làm sao để các link đến các link cũ phải được chuyển ngay đến link mới. Vấn đề này Việt Coding có chút kinh nghiệm khi đã chuyển từ bo-blog sang WordPress.
      – Đảm bảo các link tại các bài viết phải được cập nhật toàn bộ
      – Liên tục kiểm tra link gãy bằng các plugin của WP hoặc Google WebMaster Tools.

      Trường hợp của bạn đương nhiên có ảnh hưởng đến Google index chứ. Bạn có 2 cách giải quyết như vầy:

      1- Vào Google WMT, xoá hết index cũ và yêu cầu Google re-index thông qua re-submit sitemap.
      2- Redirect các link cũ về link mới, dùng .htaccess

      Trường hợp chuyển đối cấu trúc link của bạn, Việt Coding giúp bạn với dòng khai báo sau:

      RedirectMatch 301 /index.php/(.*)$ /$1/

      Bạn copy và chèn vào đầu tập tin .htaccess trong thư mục gốc của webblog (không phân biệt đó là Joomla hay WP hay bất kỳ website nào hết).

      Sau đó bạn thử truy cập vào link có dạng cũ xem nó có redirect sang link dạng mới không nhé. Có gì báo lại Việt Coding nhé 🙂

  6. Chào vietcoding, mình thử sử dụng cách chuyển từ http://www.yeucon.org sang http://www.blog.yeucon.org . Chuyển thì OK nhưng các file ảnh up lên thư mục tại yeucon.org không xuất hiện nữa, có cách nào chuyển mà vẫn giữ file hiện không. Thanks

    đây là mã mình chèn .htaccess

    # BEGIN WordPress
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^yeucon\.org$ [OR]
    RewriteCond %{HTTP_HOST} ^www\.yeucon\.org$
    RewriteRule (.*) http://www.blog.yeucon.org/$1 [R=301,L]
    # END WordPress

    order allow,deny
    allow from all

    .-= Bệnh tim mạch´s last blog ..Hiểu rõ hơn về thuốc trợ tim digoxin =-.

    1. Đoạn khai báo trên đã nói rõ rồi mà : Chuyển tất cả các truy vấn từ yeucon và http://www.yeucon đến http://www.blog.yeucon. Như vậy khi có một link hình ví dụ là yeucon/img.jpg —> http://www.blog.yeucon/img.jpg. Hình đó có không 🙂 Nếu đã chuyển domain như vậy, bạn nên chuyển toàn bộ data sang blog mới luôn. Sau đó dùng plugin http://wordpress.org/extend/plugins/velvet-blues-update-urls/ để cập nhật toàn bộ url cũ trong database sang url mới.

  7. Thanks ! Nhưng cái yeucon.org thì dùng WP còn blog.yeucon.org thì dùng blogspot.
    .-= Bệnh tim mạch´s last blog ..Hiểu rõ hơn về thuốc trợ tim digoxin =-.

  8. Tran Quang says:

    không đựơc rồi bác ơi ! Nó bác rôi 404 – không tìm thấy trên server ! Bác xem lại giúp tớ code nhé !

  9. Tran Quang says:

    À ! Cái nữa là ! làm thế nào thêm chữ “.html” cho 1 link bài viết hả bác !
    .-= Tran Quang´s last blog ..Flash Gallery Miễn Phí Hỗ Trợ Tự Động Tạo Thumbnail =-.

  10. Dat Tai says:

    Chào bạn ,site bạn nhiều thông tin hấp đãn quá
    .-= Dat Tai´s last blog ..Tạo Slider giới thiệu bài viết sử dụng jQuery =-.

  11. babylonmart.com/stores/tanphat/
    ===>>>
    babylonmart.com/stores/tanphat/index.php?site=tanphat

    Mình muốn rewrite URL từ
    babylonmart.com/stores/tanphat/index.php?site=tanphat

    thành

    babylonmart.com/tanphat/

    Thì làm thế nào bạn nhỉ ! Mình mới chỉ Rewire URL thế kia được thôi

    Mail cho mình qua acc06122gmail.com cũng được


    1. RewriteEngine on
      RewriteRule ^stores/([0-9]+)$ /$1/

      Bạn thử đoạn code trên xem sao, vì Việt Coding viết chay nên chưa chắc nó chạy, bạn cứ căn theo đó mà chỉnh sửa cho phù hợp nhé 🙂

      1. cho mình hỏi là nếu trong htaccess mình có 3 tham số mà muốn in ra 2 tham số thôi thì làm thế nào nhỉ
        Ví dụ: câu lệnh mình viết

        RewriteRule ^stores/tanphat/([^/]+)/([^/]+)-([^/]+).html$ stores/tanphat/index.php?page=$1&alias=$2&id=$3

        nhưng nó lại in ra là

        babylonmart.com/stores/tanphat/chitietsanpham/canon-powershot-53.html

        nhưng lại mất css …

        thì làm sao mà nó chuyển đường dẫn được và nhận tham số $2 và $3 nhỉ $1 bỏ qua

        babylonmart.com/stores/tanphat/index.php?page=chitietsanpham&alias=canon-powershot&id=53

        thành

        babylonmart.com/stores/tanphat/canon-powershot-53.html

        trong đó 53 là id của sản phẩm .

        1. Mất CSS là do bị ảnh hưởng bởi rewrite url, bạn cần đưa nhóm các tập tin *.js, *.css, *.jpg, *.png,… vào một rewrite khác. Chi tiết bạn tìm thêm trên Google vì cái này lâu rồi mình không xem lại nên không nhớ. Hoặc bạn một số bài tuts cơ bản nhất về lập trình trình về Zend framework, trong đó có đoạn rewrite như mình đã nói. Hồi đó có xem qua nên ZF nên nhớ 🙂

          Trường hợp rule của bạn thì thử đoạn code này xem sao:


          RewriteRule ^stores/tanphat/([^/]+)-([^/]+).html$ stores/tanphat/index.php?page=chitietsanpham&alias=$1&id=$2

          1. Xin hỏi bạn nếu có 2 code dòng htaccess như này thì làm sao mà htaccess hiểu được nhỉ:( mÌnh làm mãi nhưng htaccess chỉ nhận được 1dong lệnh:

            RewriteRule ^stores/([^/]+)/([^/]+)-([^/]+).html$ stores/$1/index.php?page=chitietsanpham&alias=$2&id=$3

            RewriteRule ^stores/([^/]+)/([^/]+)-c([^/]+).html$ stores/$1/index.php?page=danhmuc&alias=$2&catid=$3 [L]

            Mình muốn khi vào
            mart.com/stores/tanphat/index.php?page=danhmuc&alias=may-tinh-xach-tay&catid=45

            thì tự chuyển đến
            mart.com/stores/tanphat/may-tinh-xach-tay-c45.html


            mart.com/stores/tanphat/index.php?page=chitietsanpham&productid=11&alias=iphone-3gs-16gb-apple
            thì tự chuyển đến
            mart.com/stores/tanphat/iphone-3gs-16gb-apple-11.html

            Mình làm mãi mà không được!! Bạn có thể giúp mình

            1. Hai dòng khai báo đó là như nhau thì .htaccess chỉ hiểu được một thôi bác !

              P/s: Lần sau bác đừng chèn link vào bài viết nhé !

              1. Mình k để ý sorry

                RewriteRule ^stores/([^/]+)/([^/]+)-([^/]+).html$ stores/$1/index.php?page=chitietsanpham&alias=$2&id=$3

                RewriteRule ^stores/([^/]+)/([^/]+)-c([^/]+).html$ stores/$1/index.php?page=danhmuc&alias=$2&catid=$3 [L]

                Nhưng ở đây nó phân biệt qua page=… mà nhỉ

                1. Ví dụ địa chỉ này của bác : mart.com/stores/tanphat/iphone-3gs-16gb-apple-11.html đâu có cái page nào đâu 😀

                  1. ngt says:

                    bài viết cũng hữu ích cho những người chưa biết mà!

                    1. lenevog560 says:

                      Bài viết rất hay,thanks nhiều

  12. chongtham says:

    mình có url thế này: http://mydomain/?dichvu=/info/79/dich-vu-chong-tham.html
    giờ mình muốn chuyển thành: http://mydomain/dichvu/info/79/dich-vu-chong-tham.html
    và mình đã làm thế này

    RewriteEngine on
    RewriteRule /dichvu(.*) ?dichvu=$1

    và chẳng có gì thay đổi hết. giúp mình với.
    Thanks!

    1. Bạn thử đoạn code này xem:

      RewriteRule /dichvu/(.*) index.php?dichvu=$1

  13. chongtham says:

    không có gì thay đổi hết, chán thật, nó vẫn ra nguyên si thế này
    http: //mydomain/?dichvu=/info/79/dich-vu-chong-tham.html
    mình đã thử với đoạn code: RewriteRule /dichvu/(.*) index.php?dichvu=$1
    và với đoạn code: RewriteRule /dichvu/(.*) mydomain/?dichvu=$1
    cũng không được

    1. Việt Coding thấy trang web của bạn viết bằng ASP.NET, bạn áp dụng vào cho trang web này hay web khác ?

  14. chongtham says:

    không, trang PHP chứ. ASP.NET ai lại hỏi .htaccess,
    Cảm ơn bạn phản hồi.
    mình thử nhập link: http: //mydomain/dichvu/info/79/dich-vu-chong-tham.html
    thì vẫn chạy nhưng vô bình thường thì nó ko chuyển tới link này.

    1. Việt Coding chưa hiểu “vô bình thường” là thế nào vậy bác ?

  15. chongtham says:

    có nghĩa là nhập tên domain vô, còn ko bình thường là mình tự chỉnh lại cái URL thế này http: //mydomain/dichvu/info/79/dich-vu-chong-tham.html

    1. Vậy khi bạn vào mydomain/dichvu/info/79/dich-vu-chong-tham.html thì nó có đến trang đúng không ?

  16. chongtham says:

    đúng rồi. chỉ có điểu là css và image chưa được thôi, nhưng cái đó nếu rewrite lại được url thì chỉnh tiếp.

  17. thiet ke website says:

    Xin hỏi là mình muốn dùng htaccess redirect đường link không có html thành có html thì làm thế nào bạn nhỉ:-?

    ví dụ:

    domain.com/duong-dan-ngau-nhien
    ==>>
    domain.com/duong-dan-ngau-nhien.html
    Tất cả các đường dẫn không có .html đều tự redirect đến có .html

    THánk nhiều

    1. Việt Coding thấy bạn đang dùng WP mà. Cái này WP có hỗ trợ sẵn, bạn chỉnh trong phần Permalink ấy.

      1. thiet ke website chuyen nghiep says:

        Nhưng nếu dùng lệnh đó thì do là trước mình đang để file cấu hình đường dẫn là k có .html mà giờ không muốn mất link cũ đi.

        tức là chỉ bài viết thì có .html thôi:D

        mình muốn dùng htaccess để không để mất các link cũ ảnh hưởng đến SEO nữa 😛

  18. Cho hỏi tôi có file .htaccess:

    RewriteEngine on
    RewriteRule ^loaisp-([0-9]+).html$ loaisp.php?idLoai=$1
    RewriteRule ^chi/([a-zA-Z0-9_-]+)/([0-9]+).html$ chitietsp.php?idSP=$2

    thì cái hình ảnh , flash trên website đều không thấy nữa
    còn khi tôi sửa file .htaccess:

    RewriteEngine on
    RewriteRule ^loaisp-([0-9]+).html$ loaisp.php?idLoai=$1
    RewriteRule ^chi-([a-zA-Z0-9_-]+)-([0-9]+).html$ chitietsp.php?idSP=$2

    thì mới thấy được hình ảnh trên website. Tôi nghĩ khi tôi để dấu ‘/’ thì đường dẩn trên web không hiểu. Bạn có thể giúp tôi

    1. Vì Việt Coding không nắm được cấu trúc web của bạn nên không dám phán bừa. Bạn thử thêm dòng sau vào file .htaccess sau dòng RewriteEngine on và trước các rule khác:

      RewriteCond %{REQUEST_URI} !\.(css|gif|ico|jpg|js|png|swf|txt)$

      Để chính xác hơn, bạn thử kiếm trên google với từ khoá sau: htaccess prevent missing image javascript stylesheet rồi rút tỉa cho mình cách tốt nhất.

      Thân !

  19. luckytour says:

    Chào bạn Việt. Mình hiện đang là quản trị web của 1 cty du lịch. Sếp mình có yêu cầu làm lại URL thân thiện cho website. Bạn có thể hướng dẫn mình được không vậy?
    Mình xin lỗi nếu mình paste link vào đây ( nếu nó hiển thị)
    Cụ thể mình muốn rewrite url cho Category và Cho Phần Bài Viết sau:

    http_://luckytour.vn/index.php?mod=tour&cat=DulichTrungQuoc
    ==> thành http_://luckytour.vn/DulichTrungQuoc

    http_://luckytour.vn/index.php?mod=tour&cat=DulichTrungQuoc&tour_id=335_Du_lich_trung_quoc_noi_mong_6_ngay
    ===> Thành http_://luckytour.vn/DulichTrungQuoc/Du_lich_trung_quoc_noi_mong_6_ngay_335

    (Lưu ý ở phần rewrite cho phần bài viết mình muốn chuyển số 335 về phía cuối của link)

    Mình rất mong nhận được sự giúp đỡ của bạn !!
    Trân trọng cám ơn bạn thật nhiều !

    1. luckytour says:

      Mình không giỏi về code lắm nên mong bạn hướng dẫn chi tiết dùm mình với nhé..
      Cám ơn bạn !!

    2. Chào bạn,

      Trong url 1 của bạn, không thể rewrite theo url bạn đưa được vì trong url thật còn một tham số truyền vào nữa là mod. Do đó bạn có thể rewrite như thế này: /tour/DulichTrungQuoc

      RewriteRule /tour/([a-zA-Z0-9-]+) index.php?mod=tour&cat=$1

      Tương tự cho trường hợp thứ 2:

      RewriteRule /tour/([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)\_([0-9]+) index.php?mod=tour&cat=$1&tour_id=$3

      Bạn lưu ý rằng 2 rule trên chỉ là lý thuyết, thực tế áp dụng sẽ còn rất nhiều trường hợp rắc rối xảy ra, bạn nên cân nhắc.

      Lưu ý nữa là việc url dạng gạch dưới day_la_url_gach_duoi đã ko còn được dùng nữa vì nó không SEO tốt hơn dạng gạch giữa day-la-url-gach-giua. Cả 2 rule trên Việt Coding viết theo dạng gạch giữa nhé.

      Mặt khác theo Việt Coding thấy bạn đang dùng Joomla, nếu nhớ không nhầm thì J cũng có chức năng rewrite url sao bạn không dùng nó ?

      P/s: Việt Coding ko phải tên Việt bạn nhé !

      Thân,

      1. luckytour says:

        Cám ơn bạn rất nhiều… mình đã thử sử dụng tools trong quản trị và cũng được URL khá ổn: domain/tour/dulichquocte/dulichhanquoc/
        Tuy nhiên mình muốn hỏi thêm bạn 1 chút là sau khi sử dụng Tools mà mình tiếp tục rewrite theo câu lệnh của bạn thì nó có được như ý mình không?
        nghĩa là bỏ được cái dulichquocte ở đằng trước đi ấy
        domain/tour/dulichhanquoc
        Cám ơn bạn đã quan tâm tới bài comment của mình

        1. Việc sử dụng rewrite phải áp dụng đồng bộ trong cả một ứng dụng web chứ không phải cứ chèn vô là được. Do đó nếu bạn áp dụng các rule khác thì chỉ có tính tạm thời và không phải là cách tối ưu.

      2. luckytour says:

        Híc híc… mình chỉ có thể sử dụng Tools có sẵn để rewrite… giờ nó mặc định là domain/tour/dulichquocte/category/bai_viet
        Mình muốn đổi cái dấu gạch dưới thì phải làm như nào hả bạn??

        1. Bạn xem thêm trong cấu hình của Joomla vì lâu rồi Việt Coding không sử dụng nên không chắc là có tuỳ chọn chỉnh sửa phần đó hay không.

  20. WebMaster says:

    Bạn nên trích nguồn cho bài viết.

  21. Chương says:

    VIET CODING ơi giúp mình với, mình viết lại URL dc rùi nhưng nó không tự động chuyển qua URL mình mới viết, khi click vào nó vẫn là đường dẫn củ, hic hic

    1. Bạn nói rõ hơn đi, khi click là click vào link nào ?

      1. Chương says:

        thì có nghĩa là mình viết lại đường dẫn rồi, ví dụ mình viết phần Sản phẩm theo danh mục là: _/6-thoi-trang-dam-cong-so
        khi gõ đường link đó nó vẫn chạy, nhưng khi mình click vào mục Đầm Công Sở trên web mình thì nó vẫn là _/sptheodm.php?idDM=6 chứ k phải là đường link mình mới viết lại, hic
        cấu trúc .htaccess của mình nè:

        RewriteEngine on
        Options +FollowSymlinks
        RewriteBase /
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^Pattern Substitution

        RewriteEngine On
        RewriteRule ^tin-thoi-trang$ /tinthoitrang.php [L]

        RewriteEngine On
        RewriteRule ^thoi-trang-nu$ /sanpham.php [L]

        RewriteEngine on
        RewriteRule ^([0-9]*)-thoi-trang-(.*) /sptheodm.php?idDM=$1

        RewriteEngine on
        RewriteRule ^([0-9]*)-(.*).html chitietsp.php?idSP=$1
        bạn coi giúp mình với, cảm ơn nhiều !!!

        1. Rewirte_url không tác động vào cơ sở dữ liệu, CSDL của bạn xuất ra link dạng idDM=6 thì trên web hiển thị nội dung đó là đúng rồi chứ ! Bạn cần hiệu chỉnh code của web để nó hiển thị link thành 6-thoi-trang… mới đúng chứ. Rewrite_url ko đóng vai trò gì trong vấn đề của bạn cả. Có lẽ bạn vẫn còn hiểu mơ hồ về rewrite_url lắm.

          1. Chương says:

            đúng rùi bạn, mình cũng mơ hồ mấy cái này lắm, chắc phải từ từ tìm hiểu thêm thôi, hic, cảm ơn bạn nhiều nhé !!!!

  22. Chương says:

    với lại mình muốn viết _/sptheodm.php?idDM=6
    thành _/thoi-trang-dam-cong-so thì làm sao, tại mình viết sao cũng có cái ID trên đó nó mới chịu chạy, cảm ơn nhiều !!!!

    1. Để viết URL được như nói thì phải căn cứ vào cơ sở dữ liệu mới viết được. Ví dụ trong CSDL có field id là 6 và field ví dụ như slug là thoi-trang-cong-so thì mới viết được. Rewrite-URL không phải là cây đũa thần gõ vào đâu là được URL đẹp đâu, phải có nhiều yếu tố lắm.

  23. Tap Lam Web says:

    Giúp mình với,

    Mình chạy server easyPHP trên localhost và đã bật rewrite module.

    Mình muốn chuyển đường dẫn http://localhost/kar/view/search.php?mode=123&title=hello thành http://localhost/kar/view/123/hello.html nên mình đã chỉnh file .htaccess như sau:
    Options +FollowSymLinks
    RewriteEngine on
    RewriteBase /View
    RewriteRule ^view/(.*)/(.*).html view/search.php?mode=$1&title=2

    Nhưng khi truy cập địa chỉ: http://localhost/kar/view/123/hello.html thì nó lại báo là “Object not found”

    Cám ơn các bạn

  24. Hoang says:

    Cho mình hỏi tí nha các bác.
    Mình có 1 cái URL như thế này:
    http://domain.com/timkiem/?k=domain
    Mình muốn khi chạy URL này trên trình duyệt thì nó sẽ thực hiện file search.php?k=domain (với domain là lấy từ URL trên)
    Mình đã Rewrite URL như sau nhưng nó ko chạy

    RewriteRule ^timkiem/?k=(.*)$ search.php?k=$1 [NC,L]

    Các bác nào giúp mình với

  25. Phan Quoc thanh says:

    Cho mình hỏi xí..
    Giờ mình có url thế nàyhttp://www.abc.com/app/webroot/faq/
    mình muốn chuyển thành : http://www.abc.com/faq/
    thì phải làm sao bạn…cám ơn bạn nhìu

  26. thanthan says:

    Chào bạn! Mình muốn rename cái link
    http://localhost/saoviet/product/product_list.php?category_id=18
    để mất hết mấy cái biến đó bạn. Theo bạn thì làm cách nào là tối ưu nhất zậy bạn, Mình không rành lắm về SEO URL. Mong bạn giải đáp cho mình tí.

  27. Tong Vuu says:

    Việt Coding ở làm ơn giúp mình với. Mình cài web server bằng EASYPHP chạy trên window. Mình viết url rewrite như file dưới. Trên localhost thì chạy ngon lành nhưng quăng lên host của PA thì nó lại báo là không tìm thấy URL.

    Code:
    RewriteEngine on
    RewriteRule ^([a-zA-Z]+)/([a-zA-Z-]+)/([0-9]*)-*([a-zA-Z0-9-_\ ]*)$ index.php?arg1=$1&arg2=$2&arg3=$3&arg4=$4&level=2
    RewriteRule ^([a-zA-Z]+)/([a-zA-Z-]*)$ index.php?level=1&arg1=$1&arg2=$2
    RewriteRule ^([a-zA-Z]+)/([a-zA-Z-]+)/$ index.php?level=2&arg1=$1&arg2=$2
    RewriteRule ^([a-zA-Z]+)$ index.php?level=0&arg1=$1
    RewriteRule ^([a-zA-Z]+)/$ index.php?level=0&arg1=$1
    RewriteRule ^([a-zA-Z]*)$ index.php?level=0&arg1=$1

    Host của mình: http://tuonglaicentre.org/tuonglai/

    Mong bạn xem giúp mình coi mấy cái rewrite trên có sao không ?

    Thông tin: http://www.tuonglaicentre.org/tuonglai/info.php

    Cám ơn bạn

    1. Bạn đang dùng host chạy trên hệ điều hành Windows.

      1. Tong Vuu says:

        Ừm, đúng rồi.

        Nhưng mình hỏi thằng admin của PA rùi, nó nói host có hỗ trợ rewrite và chỉ cần viết đúng file .htaccess thì được. File .htaccess đó mình cũng chạy được trên localhost rồi (server EASYPHP ) nhưng up lên host đó thì không chạy được.

        Ý của mình là tất cả request có dạng đó điều chuyển về index.php hết. Bạn xem dùm mình coi file .htaccess đó có đúng không nhe.

        Chân thành cảm ơn

        1. Bạn đã chạy được trên localhost thành công ===> rule của bạn đã đúng
          Up lên host không chạy được ===> Lỗi do host ===> contact support.

  28. Tong Vuu says:

    Hjx, vậy là Rule đúng à. Bạn thấy nó đúng hả ? Hay là dựa vào kết quả mình nói ? Chắc thử up lên host khác quá. Cám ơn bạn nhiều

  29. Tong Vuu says:

    Xin chào vietcoding,

    Mình đã liên hệ với supporter của host và họ đã cái cái rewrite module lại rồi.

    Bây giờ gặp tình trạng là truy cập được đến mức số 2 thôi chứ không truy cập được mức 3

    Ví dụ, trên localhost mình có thể truy cập link sau:
    http://localhost/tuonglai/gallery/view/0-Hinh-anh
    Trong khi trên host chỉ truy cập được đến
    http://tuonglaicentre.org/gallery/view/

    Nếu mình đánh vào:
    http://tuonglaicentre.org/gallery/view/0-Hinh-anh

    thì lại bảo là lỗi không tìm thấy path.

    Bạn chỉ dùm mình giải quyết sao nhé.

    Thanks nhiều

    1. Bạn nên chuyển hẳn sang hosting Linux để sử dụng ổn định hơn. Nếu còn tiếp tục xài Apache trên Windows bạn sẽ còn gặp những lỗi như vậy nhiều. Mất thời gian không đáng.

  30. Tong Vuu says:

    OK. Cám ơn bạn.

    Mình đã yêu cầu chuyển sang host Linux rùi.

    Merry X’Mas !

  31. Khoa Nguyen says:

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^vietcoding.com$
    RewriteRule (.*) http://www.vietcoding.com/$1 [R=301,L]
    Mình thêm dòng
    RewriteCond %{HTTP_HOST} ^www.vietcoding.com$

    được không?
    Mình muốn chuyển hướng http://www.abc.com và abc.com ==> hướng vào một link khác trên web.

  32. Phương Trần says:

    Bạn giúp mình rule cho link này với
    /menu/sanpham/index.php?id=M01

    mình mới tìm hiểu nên chưa quen. cám ơn nhiều nhé

  33. TOÀN says:

    Mình muốn viết RewriteRule giống như zing thì sao nhĩ, giải đáp giúp mình với
    http://mp3.zing.vn/tim-kiem/bai-hat.html?q=yeu+lai+tu+dau

    nếu viết vầy thì đơn giản rồi
    http://mp3.zing.vn/tim-kiem/bai-hat/yeu+lai+tu+dau.html

  34. hoangmaster says:

    Bạn cho mình hỏi phần chuyển web vào thư mục con đó.Mình code xong ở root nó chạy ok rồi nhưng đến khi chuyển vòa thư mục con nó lại bị lỗi đường dẫn chỉ chạy đc template của index.mình cũng đã thử cấu hình htaccess như phần 5 của bạn mà vẫn ko đc,mong bạn giúp đỡ.
    cấu hình htaccess của tớ là:
    RewriteEngine On
    php_flag zlib.output_compression on
    RewriteCond %{HTTP_HOST} ^localhost$
    RewriteCond %{REQUEST_URI} !^/product/
    RewriteRule (.*) /product/$1
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    Mong bạn phản hồi sớm cho mình.thanks!

  35. Ricky1990 says:

    Em xin chào bác VietCoding,

    Em có 1 website joomla sử dụng module hiển thị tin tức ra ngoài trang chủ (đã tối ưu hóa url tự động trong trang quản trị), link dẫn đến các bài viết có dạng là :

    domain.com/component/content/article/46-tin-tuc/tieu-de-bai-viet

    Nay em muốn dùng htaccess để chuyển link thành

    domain.com/tin-tuc/tieu-de-bai-viet

    Mong bác giúp em đoạn code trong htaccess với !

  36. Thành says:

    Có cách nào khác không mọi người? mình mua host windows (bây giờ không thể chuyển sang linux) muốn cài joomla mà không được. mình up file cài đặt của joomla vào httpdocs. và mình truy cập vào địa chỉ: mydomain.com/joomla/installation nhưng hiện thông báo:
    “404 – File or directory not found.
    The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable.”
    mọi người giúp với

  37. trường tiểu học says:

    sao minh rewrite mà vẩn chưa đươc buồn quá

  38. lenevog560 says:

    Mình có vấn đề như thế này mong bạn chỉ giúp:
    Mình có một url http://abc.com/vn/………… mình muốn chuyển sang link http;//abc.com/vi/……..
    thì mình cấu hình htaccess như thế nào?
    Thanks,

  39. Thanh Hải says:

    Sao tôi làm mãi mà không được
    – Đã sửa httpd trong apache/conf
    -Nội dung .htaccess

    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^index-([0-9]+).html$ index.php?id=$1

    -Đặt .htaccess và index.php trong htdocs của xampp
    Tôi đã làm sai hay thiếu bước nào vậy ?

  40. Hung says:

    Em có một đươnf dẫn như thế này :
    http://localhost:82/wordpress/story.php?page=VuHung\Z\Zekkyou-Gakkyuu.xml

    sau khi em dùng htaccess chuyển nó như thế này
    http://localhost:82/wordpress/VuHung/Z/Zanbara.xml.html#

    Bằng đoạn code sau :

    # BEGIN WordPress
    Options +FollowSymLinks
    RewriteEngine on
    RewriteRule (.*)\.html story.php?page=$1
    # END WordPress

    Nhưng những file ảnh của em không tài nào hiển thị lên được nữa.Và cho em hỏi thêm là làm cách nào để trình duyệt nó tự động chuyển sang link http://localhost:82/wordpress/VuHung/Z/Zanbara.xml.html# cho em.

  41. kakalot says:

    Mình cần chuyển sub.domainname.com/rewrite-string/abc/def/ thành domainname.com/index.php/dir/controller/?var1=abc&var2=def thì làm thế nào hả bạn?
    Mình đã thử câu lệnh RewriteRule ^product/([a-zA-Z0-9_-]+)/([0-9]+).html$ product.php?id=$2 nhưng không được

Comments are closed.


GENESIS FRAMEWORK