09/10/2018, 23:23

Kiểm tra và xem giùm đoạn Mod Rewirte đơn giản?

Mình có URL như sau:
http://site.com/index.php?mod=news&cate=1&id=2

Muốn chuyển thành:
http://site.com/news/1/2

File .htaccess mình viết:
Code:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^/(.*)/(.*)/(.*)/$ index.php?mod=$1&cate=$2&id=$3
Không chạy!
Nhờ mọi người chỉnh giùm. Để nó chạy có cần điều kiện j nữa không? Ví dụ: Trong code thay vì dùng link http://site.com/index.php?mode=news ta đổi thành http://site.com/news ???
我爱你 viết 01:37 ngày 10/10/2018
RewriteEngine on
RewriteRule ^/(.*)/(.*)/(.*)/$ /index.php?mod=$1&cate=$2&id=$3

thử xem sao
TheHeTre viết 01:33 ngày 10/10/2018
Mình đã chỉnh lại thành:
Code:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^/(.*)/(.*)/(.*)/$ index.php?mod=$1&cate=$2&id=$3
---> Đã chạy. Nhưng giờ muốn thêm các URL ngắn hơn, ví dụ:

http://site.com/index.php?mod=news&cate=1 Chuyển thành: http://site.com/news/1

http://site.com/index.php?mod=news Chuyển thành: http://site.com/news

---> Viết như thế này:

Code:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ index.php?mod=$1
RewriteRule ^(.*)/(.*)$ index.php?mod=$1&cate=$2
RewriteRule ^(.*)/(.*)/(.*)$ index.php?mod=$1&cate=$2&id=$3
lại không chạy mấy cái mới. Thực sự đang nghiên cứu nó nên chưa hiểu về các Metal Character với các sử dụng Symbol. Mọi người help tiếp nhé.
Cảm ơn nhiều.
kid08 viết 01:38 ngày 10/10/2018
RewriteRule ^(.*)/(.*)$ index.php?mod=$1&cate=$2
RewriteRule ^(.*)/(.*)/(.*)$ index.php?mod=$1&cate=$2&id=$3

đoạn nà hok đc vì trong (.*) nó chứa cả dấu / rồi nên hok đc , bác thử định rõ biểu thức quy tắc coi
jiSh@n viết 01:36 ngày 10/10/2018
Quote Được gửi bởi TheHeTre View Post
Mình đã chỉnh lại thành:
Code:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^/(.*)/(.*)/(.*)/$ index.php?mod=$1&cate=$2&id=$3
---> Đã chạy. Nhưng giờ muốn thêm các URL ngắn hơn, ví dụ:

http://site.com/index.php?mod=news&cate=1 Chuyển thành: http://site.com/news/1

http://site.com/index.php?mod=news Chuyển thành: http://site.com/news

---> Viết như thế này:

Code:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ index.php?mod=$1
RewriteRule ^(.*)/(.*)$ index.php?mod=$1&cate=$2
RewriteRule ^(.*)/(.*)/(.*)$ index.php?mod=$1&cate=$2&id=$3
lại không chạy mấy cái mới. Thực sự đang nghiên cứu nó nên chưa hiểu về các Metal Character với các sử dụng Symbol. Mọi người help tiếp nhé.
Cảm ơn nhiều.
Đổi thành thế này
Code:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)/(.*)/(.*)$ index.php?mod=$1&cate=$2&id=$3
RewriteRule ^(.*)/(.*)$ index.php?mod=$1&cate=$2
RewriteRule ^(.*)$ index.php?mod=$1
TheHeTre viết 01:32 ngày 10/10/2018
@ jiSh@n : Khi viết như thế site lỗi không thể truy cập được !

Ai còn cách nào khác không?
bestempire viết 01:26 ngày 10/10/2018
Bro dùng dịch vụ này nhé, free đấy:
http://www.mod-rewrite-wizard.com/
jiSh@n viết 01:32 ngày 10/10/2018
Quote Được gửi bởi TheHeTre View Post
@ jiSh@n : Khi viết như thế site lỗi không thể truy cập được !

Ai còn cách nào khác không?
Lạ nhỉ? Apache ở nah2 tui vẫn truy cập được. Nó báo lỗi thế nào vậy?
acquydeptrai viết 01:39 ngày 10/10/2018
Options +FollowSymLinks
RewriteEngine on
RewriteRule showthread/(.*)/(.*)/$ /forum/showthread.php?$1=$2
mình dùng cái này để rewrite từ forum/showthread.php?t=19025 thành forum/showthread/p/19025/ mà không được! Bạn nào chỉ giùm mình sai ở đâu?
darkera13 viết 01:30 ngày 10/10/2018
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ index.php?mod=$1
RewriteRule ^(.*)/(.*)$ index.php?mod=$1&cate=$2
RewriteRule ^(.*)/(.*)/(.*)$ index.php?mod=$1&cate=$2&id=$3
Here for you:

Code:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^([A-Za-z]+)$ index.php?mod=$1
RewriteRule ^([A-Za-z]+)/([0-9]+)$ index.php?mod=$1&cate=$2
RewriteRule ^([A-Za-z]+)/([0-9]+)/([0-9]+)$ index.php?mod=$1&cate=$2&id=$3
Notice: ký tự * bao hàm tất cả các ký tự vì thế nên
Code:
RewriteRule ^(.*)$ = RewriteRule ^(.*)/(.*)$ = RewriteRule ^(.*)/(.*)/(.*)$
Bài liên quan
0