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

Published by Việt Coding on

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 (.*) https://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

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

Quảng cáo tài trợ


Việt Coding

Là một người đam mê lập trình, tôi vọc vạch đủ thứ liên quan đến lập trình cho thoả chí tò mò. Hiện làm chủ yếu ở mảng phát triển ứng dụng di động cho iOS và Android với React Native. Thỉnh thoảng vọc vạch mấy thứ liên quan đến Internet of Things như Smart Home. Đang nghịch mấy con Raspberry Pi và thấy nó cũng thú vị :)

77 Comments

Tinh · 26/03/2010 at 10:40

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! =-.

    Việt Coding · 26/03/2010 at 17:38

    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ở 😮

Giáng Châu · 29/03/2010 at 16:09

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 =-.

    Việt Coding · 31/03/2010 at 13:09

    Hi,

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

      dưngin · 12/07/2012 at 15:25

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

LeHienTinh · 02/04/2010 at 22:01

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 =-.

sim so dep · 03/04/2010 at 00:59

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 =-.

Tran Quang · 03/04/2010 at 22:30

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 =-.

    Việt Coding · 03/04/2010 at 22:48

    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é 🙂

Bệnh tim mạch · 04/04/2010 at 15:42

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 =-.

Bệnh tim mạch · 04/04/2010 at 18:10

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 =-.

Tran Quang · 04/04/2010 at 18:24

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é !

Tran Quang · 04/04/2010 at 18:26

À ! 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 =-.

Dat Tai · 25/04/2010 at 08:42

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 =-.

Điện máy Babylon · 17/03/2011 at 17:30

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

    Việt Coding · 18/03/2011 at 08:04


    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é 🙂

      Điện máy Babylon · 18/03/2011 at 11:07

      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 .

        Việt Coding · 18/03/2011 at 13:54

        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

          dien may babylon · 21/03/2011 at 12:50

          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

            Việt Coding · 21/03/2011 at 13:25

            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é !

              dien may babylon · 21/03/2011 at 13:54

              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ỉ

                Việt Coding · 21/03/2011 at 17:19

                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 😀

                  ngt · 09/02/2012 at 15:40

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

                    lenevog560 · 28/08/2012 at 15:42

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

chongtham · 05/04/2011 at 10:18

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!

    Việt Coding · 07/04/2011 at 17:02

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

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

chongtham · 08/04/2011 at 07:32

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

    Việt Coding · 08/04/2011 at 16:41

    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 ?

chongtham · 08/04/2011 at 16:54

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.

    Việt Coding · 08/04/2011 at 17:03

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

chongtham · 08/04/2011 at 17:05

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

    Việt Coding · 08/04/2011 at 18:33

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

chongtham · 09/04/2011 at 07:55

đú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.

thiet ke website · 11/07/2011 at 18:09

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

    Việt Coding · 13/07/2011 at 16:08

    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.

      thiet ke website chuyen nghiep · 15/07/2011 at 00:04

      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 😛

Nguyễn Thắng · 12/07/2011 at 09:56

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

    Việt Coding · 13/07/2011 at 16:14

    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 !

luckytour · 04/08/2011 at 01:01

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 !

    luckytour · 04/08/2011 at 01:02

    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 !!

    Việt Coding · 06/08/2011 at 11:20

    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,

      luckytour · 06/08/2011 at 12:08

      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

        Việt Coding · 06/08/2011 at 16:50

        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.

      luckytour · 06/08/2011 at 12:35

      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??

        Việt Coding · 06/08/2011 at 16:51

        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.

WebMaster · 05/08/2011 at 18:44

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

Chương · 30/08/2011 at 10:14

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

    Việt Coding · 30/08/2011 at 22:59

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

      Chương · 30/08/2011 at 23:16

      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 !!!

        Việt Coding · 30/08/2011 at 23:32

        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.

          Chương · 30/08/2011 at 23:36

          đú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é !!!!

Chương · 30/08/2011 at 10:18

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 !!!!

    Việt Coding · 30/08/2011 at 23:01

    Để 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.

Tap Lam Web · 18/10/2011 at 20:02

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

Hoang · 19/10/2011 at 17:14

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

Phan Quoc thanh · 28/10/2011 at 09:39

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

thanthan · 05/12/2011 at 17:35

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í.

Tong Vuu · 12/12/2011 at 19:53

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

    Việt Coding · 13/12/2011 at 08:17

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

      Tong Vuu · 13/12/2011 at 21:20

      Ừ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

        Việt Coding · 13/12/2011 at 21:33

        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.

Tong Vuu · 13/12/2011 at 21:40

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

Tong Vuu · 22/12/2011 at 19:18

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

    Việt Coding · 22/12/2011 at 21:34

    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.

Tong Vuu · 23/12/2011 at 23:52

OK. Cám ơn bạn.

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

Merry X’Mas !

Khoa Nguyen · 25/04/2012 at 10:49

RewriteEngine On
RewriteCond %{HTTP_HOST} ^vietcoding.com$
RewriteRule (.*) https://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.

Phương Trần · 08/05/2012 at 12:23

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é

TOÀN · 16/05/2012 at 16:30

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

hoangmaster · 22/05/2012 at 21:00

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!

Ricky1990 · 17/06/2012 at 16:11

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 !

Thành · 21/06/2012 at 16:16

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

trường tiểu học · 27/08/2012 at 23:11

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

lenevog560 · 28/08/2012 at 15:53

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,

Thanh Hải · 23/10/2012 at 20:00

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 ?

Hung · 30/10/2012 at 09:02

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.

kakalot · 03/11/2012 at 12:25

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.