[Hỏi] Sửa đường dẫn URL trang danh mục và sản phẩm

Thảo luận trong 'Lập trình web với PHP' bắt đầu bởi huy_seo, 20/4/15.

  1. huy_seo

    huy_seo Đang làm quen

    Tham gia ngày:
    8/3/14
    Bài viết:
    38
    Đã được thích:
    0
    Điểm thành tích:
    6
    Chào mọi người!

    Mình tự mày mò, tìm kiếm học PHP qua mạng nên cũng còn tơ lơ mơ về khoản này!
    Vừa được thừa hưởng 1 bộ code PHP thuần theo mô hình MVC của 1 website mà có chút không hiểu muốn hỏi nhờ mọi người giải đáp giùm!

    MVC chắc ai cũng biết là Model, Control và Views rồi. Trong thưc mục views có các file index.php, danhmuc.php, sanpham.php

    Hiện tại đường dẫn trang danh mục có dạng: trangchu/danhmuc/tendanhmuc1.html

    Mình muốn chuyển sao để về được dạng: trangchu/tendanhmuc1.html

    - Mình đã làm được bằng cách tạo riêng file có tên là tendanhmuc1.html nhưng nếu như vậy khi muốn thêm danh mục mới lại phải thêm file mới sẽ rất bất tiện.
    - Tìm hiểu mày mò .htaccess Rewrite lại mà vẫn ko ra. Mình chỉ làm redirect từ trangchu/danhmuc/tendanhmuc1.html về trangchu/tendanhmuc1.html nhưng lại báo lỗi 404.

    P/s: Do còn gà về PHP nên nếu có sai sót chỗ nào mong mọi người thông cảm! Và nếu có sai box thì mong admin, mod Move giúp chứ đừng xóa bài hay ban nick ạ! Thanks all!
     
  2. huy_seo

    huy_seo Đang làm quen

    Tham gia ngày:
    8/3/14
    Bài viết:
    38
    Đã được thích:
    0
    Điểm thành tích:
    6
    Ai giúp với ạ!
    Rewrite mãi mà vẫn không được!!!!!!!!!!!!!!!!
     
  3. mtquang212

    mtquang212 Đang làm quen

    Tham gia ngày:
    29/4/10
    Bài viết:
    43
    Đã được thích:
    0
    Điểm thành tích:
    6
    làm gì thế cho cực hả bạn. Bạn để đường link trangchu/danhmuc/tendanhmuc1.html như thế này tốt cho seo hơn chứ
     
  4. babyinternet

    babyinternet Administrator

    Tham gia ngày:
    4/7/08
    Bài viết:
    4,655
    Đã được thích:
    1,588
    Điểm thành tích:
    113
    Nơi ở:
    [}{]e[][]
    Muốn sửa hết toàn trang thì bạn phải mở view ra để kiểm tra sửa link lại. Dĩ nhiên, để apache có thể hiểu đúng bạn cần quan tâm đến .htaccess và thiết lập rule chính xác cho nó. Bạn nói vậy cũng hơi mơ hồ nên không biết xác định rule cho bạn như thế nào.

    Bạn có thể kiểm tra bằng cách sau:
    1. Kiểm tra xem đường dẫn trangchu/danhmuc/tendanhmuc1.html là duy nhất hay chưa (liệu có sản phẩm có đường dẫn tương tự như trangchu/danhmuc/tensanpham.html hay không?)
    2. Kiểm tra các rule hiện tại trong htaccess xem được viết như thế nào từ đó tìm ra quy luật đặt rule của danh mục.
    3. Chỉnh sửa rule danh mục theo đường dẫn mới.
    4. Mở view chỉnh link trong view theo đường dẫn mới.
    5. Thực hiện redirect link cũ sang link mới.

    Nếu khó quá thì đề nghị sếp thuê người làm đi, đừng cố quá coi chừng quá cố.
     
  5. duthu94

    duthu94 Lính mới

    Tham gia ngày:
    7/4/15
    Bài viết:
    21
    Đã được thích:
    0
    Điểm thành tích:
    1
    Bạn nên vào những diễn đàn chuyên PHP họ sẽ giúp một cách dễ hơn. Chứ ở đây không chuyên nhiều khi cũng khó bác ah
     
  6. huy_seo

    huy_seo Đang làm quen

    Tham gia ngày:
    8/3/14
    Bài viết:
    38
    Đã được thích:
    0
    Điểm thành tích:
    6
    URL mình muốn để phân cấp ngắn hơn cho dễ SEO mà bạn!

    Em tự làm cho mình mà! E cũng mới tìm hiểu qua về nó thôi nên đặt câu hỏi chưa được rõ ràng, mong bác thông cảm!
    Chính vì còn mơ hồ nên đọc bài này của bác e cũng khó hiểu quá!

    1. Đường dẫn về danh mục do e lấy theo ID nên thay chữ bất kỳ mà vẫn giữ ID thì vẫn ra nội dung như vậy. Trang sản phẩm cũng tương tự như vậy. Cái này chắc phải khắc phục lại lấy theo cả tên của nó nữa!

    2. File .htaccess nó đây ạ:
    Mã:
    RewriteEngine On
    RewriteBase / 
    RewriteCond %{HTTP_HOST} !^guitarviet.tk$ [NC]
    RewriteRule ^(.*)$ guitarviet.tk/$1 [R=301,L]
    RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d 
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    ##############################################################################
    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^.*$ index.php [NC,L]
    ##############################################################################
    RewriteRule .*.(gif|jpg|png|jpeg)$ - [NC,F,L]                                     #
    ##############################################################################
    RewriteCond %{HTTP_HOST} ^guitarviet.tk$
    RewriteRule ^([a-z0-9-]+)-c([0-9]+).html$ ^danh-muc/$1-c$2.html
    3. E tìm hiểu về .htaccess thì làm như dòng cuối cùng ko biết đã chính xác chưa ạ?


    Đây là box PHP của diễn đàn webmaster mà bạn!
     
  7. khongcamxuc

    khongcamxuc Đang làm quen

    Tham gia ngày:
    24/3/14
    Bài viết:
    37
    Đã được thích:
    0
    Điểm thành tích:
    6
    sửa URL thì URL trước sẽ bị mất đó bạn, nếu URL trước có tốp rồi thì không nên sửa nhé
     
  8. babyinternet

    babyinternet Administrator

    Tham gia ngày:
    4/7/08
    Bài viết:
    4,655
    Đã được thích:
    1,588
    Điểm thành tích:
    113
    Nơi ở:
    [}{]e[][]
    Dòng cuối cùng của bạn quy định rule cho danh mục :

    Mã:
    RewriteRule ^([a-z0-9-]+)-c([0-9]+).html$ ^danh-muc/$1-c$2.html
    Theo nguyên tắc của bạn thì gặp chuỗi -c(số).html thì rewrite lại thành danh-muc/$1-c$2.html cũng tạm ổn nhưng lỡ gặp đúng article có url giông vậy thì hơi kẹt. Bạn thử rule này xem:

    Mã:
    RewriteRule ^([a-z0-9-]+)/([a-z0-9-]+)-c([0-9]+).html$ /$2-c$3.html [R=301,L]
     
  9. dat47th

    dat47th Đang làm quen

    Tham gia ngày:
    21/2/14
    Bài viết:
    36
    Đã được thích:
    0
    Điểm thành tích:
    6
    Cái này làm phải cẩn thận về direct điều hướng không thì bị phạt đó, trước kia của mình có 1 site vệ tinh cũng làm như vậy vào đợt cập nhật của GG thế là cả thệ thống liên kết với site đó bị GG baner bằng tay luôn vì trước kia bạn đi link theo hướng đó giờ cắt bớt GG sẽ đánh giá link không tự nhiên và phạt thôi, mình bị phạt 6 tháng giờ chưa khôi phục lại được vị trí ban đầu-
     
  10. huy_seo

    huy_seo Đang làm quen

    Tham gia ngày:
    8/3/14
    Bài viết:
    38
    Đã được thích:
    0
    Điểm thành tích:
    6
    Thanks bác đã nhiệt tình giúp đỡ, em mày mò từ hqua đến giờ hóa ra là do trong code chứ ko phải do Rewrite trong .htaccess.
    Do code mặc định nếu ko có danh-muc hoặc san-pham sau trangchu/ thì nó sẽ báo lỗi 404. E đã sửa OK rồi, bác close topic giúp e ạ!

    Site mình mới bắt tay vào làm thôi, chưa SEO nên không lo những vấn đề đó!
    Nguyên tắc của mình là phải tối ưu OK rồi mới bắt đầu SEO!
     
Đang tải...

Chia sẻ trang này