PDA

View Full Version : Lỗi khi dùng mod rewrite URL



digihomec
30-12-2008, 14:39
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
30-12-2008, 15:04
Trước tiên host của bạn có hỗ trợ mod rewrite ko :D

digihomec
30-12-2008, 15:51
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
30-12-2008, 16:08
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
30-12-2008, 17:41
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
30-12-2008, 17:45
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
30-12-2008, 18:05
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
30-12-2008, 20:21
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
01-01-2009, 10:33
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
01-01-2009, 13:18
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]

sacroyant
01-01-2009, 14:43
Tớ lại khoái chơi mấy cái url rối tinh ***? với những chuỗi ký tự ngẫu nhiên hỗn độn, nhìn nó bí ẩn hơn nhiều lol

digihomec
01-01-2009, 15:41
Tớ lại khoái chơi mấy cái url rối tinh ***? với những chuỗi ký tự ngẫu nhiên hỗn độn, nhìn nó bí ẩn hơn nhiều lol

Đúng là cứ để nguyên link toàn các kí tự lằng nhằng ? và & là chạy nhanh nhất, vì server không mất công biên dịch chuyển đổi link ảo thành link thật. Nhưng nhìn như vậy lại không đẹp mắt và thêm nữa là sẽ không đựoc các SE index.
Tôi làm như các pro hướng dẫn trên. Bây giờ nó kô bị lỗi không tìm thấy trang nữa mà lại bị lỗi là khi click vô bất cứ link nào nó cũng vẫn quay về trang index.php.
Các pro cho xin thuốc chữa nhé

[=========> Bổ sung bài viết <=========]

Thôi thế này vậy, Chẳng bác nào chịu giúp cả. Em vọc mãi mà chẳng ra, cũng đang cần gấp nên em trao giải 300K cho bác nào debug hộ cái lỗi này. Hiện tại các link đã đựoc viết hết rồi, chỉ cần tạo file htaccess làm sao để cho nó chạy đựoc với link ảo thôi, Trước đây chạy với link thật thì Ok hết. Hơn nữa website của em đã làm chế độ cho phép chuyển đổi qua lại để chạy hai chế độ: bất/tắt mod rewrite.
Bác nào muốn làm thì PM nhé.