10/10/2018, 09:23

Lỗi khi dùng mod rewrite URL

Tôi định mã hóa link theo dạng như sau cho trang web đang làm. Nhưng không hiểu sao khi chạy lại không đựoc:
đường dẫn thật có dạng: mydomain.com/web/index.php?act=home
mydomain.com/web/index.php?act=news
mydomain.com/web/index.php?act=news&view=detail&id=123

bây giờ tôi muốn thay đổi để link có dạng như sau:
mydomain.com/web/home/
mydomain.com/web/news/
mydomain.com/web/news/detail/123

file .htaccess có nội dung như sau:
RewriteEngine On
Options +FollowSymLinks All
RewriteBase /

RewriteRule ^act/([a-zA-Z]*)/ index.php?act=$1

copy vào thư mục gốc rồi, nhưng không hiểu sao khi click vào link trên web ví dụ click vào mydomain.com/web/home/ thì nó báo không tìm thấy trang web (The webpage cannot be found!)

Phải sửa file .htaccess thế nào để có thể nhận đựoc link ảo theo dạng: mydomain.com/web/home/
Mong các pro cho ý kiến nhé.
katadn viết 11:38 ngày 10/10/2018
Trước tiên host của bạn có hỗ trợ mod rewrite ko
digihomec viết 11:34 ngày 10/10/2018
Tôi dùng host Linux có hỗ trợ mod rw và đã bật tính năng này lên rồi.
Mahakaruna viết 11:35 ngày 10/10/2018
RewriteEngine On
Options +FollowSymLinks All
RewriteBase /web

RewriteRule ^(.*)/$ $1
RewriteRule ^([a-zA-Z]+)$ index.php?act=$1
RewriteRule ^([a-zA-Z]+)/([a-zA-Z]+)$ index.php?act=$1&view=$2
RewriteRule ^([a-zA-Z]+)/([a-zA-Z]+)/([0-9]+)$ index.php?act=$1&view=$2&id=$3
digihomec viết 11:24 ngày 10/10/2018
Tôi cũng viết giống như kiểu của bác thôi, vậy mà chạy trên localhost cũng không được, chạy cả trên host linux cũng không được. Nó để báo The webpage cannot be found khi click vô đường link nào đó. Không biết lỗi ở đâu nữa.
voke viết 11:25 ngày 10/10/2018
Chạy trên localhost thường gặp lỗi ( vì nhiều lý do ), bạn có thể test trên một free host nào đó ( VD như byethost.com chẳng hạn ) sẽ dễ dàng hơn.
Mahakaruna viết 11:36 ngày 10/10/2018
Được gửi bởi digihomec
Tôi cũng viết giống như kiểu của bác thôi, vậy mà chạy trên localhost cũng không được, chạy cả trên host linux cũng không được. Nó để báo The webpage cannot be found khi click vô đường link nào đó. Không biết lỗi ở đâu nữa.
Cái rule tôi post bên trên là đã test đàng hoàng rồi đấy.
Có khi ông chưa enable mod_rewrite cũng nên )
digihomec viết 11:27 ngày 10/10/2018
Được gửi bởi voke
Chạy trên localhost thường gặp lỗi ( vì nhiều lý do ), bạn có thể test trên một free host nào đó ( VD như byethost.com chẳng hạn ) sẽ dễ dàng hơn.
Tôi chạy hẳn trên host của nhân hòa cũng ko đựoc mà.
Trên localhost đã bật mod rw lên rồi cũng không đựoc.
file htaccess cũng không có gì sai cả, vậy mà nó kô chịu chạy, kì lạ quá nhỉ.
Có cần phải thay đổi gì thêm nữa kô các bác? ngoài các thay đổi như trên. Từ trứoc tới nay tôi cứ viết link nhìn loằng ngoằng toàn ? với & . Bây giờ muốn sửa lại cho đẹp mắt chút mà lỗi khôg tìm ra nguyên nhân tại đâu.
wantlove viết 11:37 ngày 10/10/2018
nhân đây cho mình ké luôn.
Mình cũng đã bật mod_rewrite rồi.
Tạo file .htaccess.
Mình thử test một cái đơn giản nhưng nó không có tác dụng gì cả.
/////////////
RewriteEngine On
Options +FollowSymLinks All

RewriteRule ^a.html& b.html[L]

///////////

why?
Mahakaruna viết 11:28 ngày 10/10/2018
Được gửi bởi wantlove
nhân đây cho mình ké luôn.
Mình cũng đã bật mod_rewrite rồi.
Tạo file .htaccess.
Mình thử test một cái đơn giản nhưng nó không có tác dụng gì cả.
/////////////
RewriteEngine On
Options +FollowSymLinks All

RewriteRule ^a.html& b.html[L]

///////////

why?
Thay & thành $ hoặc bỏ luôn nó đi
Them khoảng trắng trc [L] nữa


RewriteRule ^a.html$ b.html [L]
Bài liên quan
0