PDA

View Full Version : Rewrite URL với .htaccess



ngoisaobachkim
06-03-2010, 09:20
Mình có một vấn đề với rewrite url như thế này:
Khi rewrite một link giả sử:
http://localhost/kpkh/index.php?f=upload&do=play&id=8&tit=Yeu-La-Yeu
thành
http://localhost/kpkh/upload/play/8/Yeu-La-Yeu
nhưng khi đang ở đường dẫn "http://localhost/kpkh/upload/play/8/Yeu-La-Yeu"
mình muốn chạy một bài khác:
http://localhost/kpkh/upload/play/8/upload/play/7/Nhu-Mua-Thu-Qua thì nó lại thành rewrite từ chính cái cũ và chạy cái cũ.
Làm thế nào để khắc phục bạn nào biết chỉ mình với.

fotech_nd
06-03-2010, 10:00
Post file .htaccess lên coi thì mới biết bạn sai chỗ nào chứ.

duyuoc
08-03-2010, 11:44
Chắc là khi bắt biến GET bạn ấy bắt theo ID chứ không phải theo tên bài hát rối ;)

namduong8889
09-03-2010, 20:39
bạn rewrite hết request uri thành parameter của index.php, rồi cầm đống request đó xử lý thì hay hơn và như thế nó mới cross-web server.

ví dụ:

http://yourdomain.com/request-rất-lằng-nhằng-và-dài => rewrite thành => index.php/request-rất-lằng-nhằng-và-dài

rồi lấy request đó ở biến này $_SERVER[REQUEST_URI]; và cầm đi xử lý. Chứ viết chi chít rewrite vào .htaccess rất mệt, maintain khó, nhỡ chuyển qua lighttpd chạy thì lại ngồi viết lại từ đầu

(cái trò này là mình học của symfony php framework)

rinvt
22-03-2010, 16:25
Mình có trang web đường dẫn như thế này
/index.php?frame=new_member

/?frame=product&cat=185

?frame=product_detail&id=1425

Còn đây là nội dung file htaccess
RewriteEngine on
RewriteBase /
RewriteRule ^([a-zA-Z]+).html$ ?frame=$1
RewriteRule ^([0-9]+)/([a-zA-Z]+).html$ ?frame=$2&id=$1
RewriteRule ^(page[0-9]+)/([0-9]+)/([a-zA-Z]+).html$ ?frame=$3&id=$2&page=$1

Nhưng nó không chạy . Ai biết giúp mình với

thuyduongcd
22-03-2010, 16:58
Options +FollowSymLinks
RewriteEngine on

RewriteRule /frame/(.*)/id/(.*)/page/(.*)\.html index.php?frame=$1&id=$2&page=$3

rinvt
22-03-2010, 17:15
Nó chẳng thay đổi gì cả bạn ah

thuyduongcd
22-03-2010, 17:47
Thay đổi cái gì chứ? Cứ đánh như vậy rồi trong code dùng GET mà lấy value thôi

rinvt
23-03-2010, 01:06
Link thật của mình như thế này nè
http://domain.vn/cuahang/index.php?frame=gioithieu
http://domain.vn/cuahang/index.php?frame=product&cat=185
http://domain.vn/cuahang/index.php?frame=product_detail&id=1426
Bây giờ mình muốn nó rewrite như thế này
http://domain.vn/cuahang/gioithieu.html
http://domain.vn/cuahang/do-noi-that/185.html
http://domain.vn/cuahang/chi-tiet/1426.html

các bạn giúp mình với . Là trong trường hợp này mình viết file .htaccess như thế nào . Và mình sửa link trong code như thế này đã đúng chưa

<a href="gioithieu.html">&nbsp;&nbsp;&nbsp;Giới thiệu </a>
Mong các bạn giúp dùm

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

Híc các bạn giúp mình với mình đang cần lắm

rinvt
26-03-2010, 13:40
Không có giúp mình hết sao . Các cao thủ giúp mình với

pcdinh
26-03-2010, 18:50
Link thật của mình như thế này nè
http://domain.vn/cuahang/index.php?frame=gioithieu
http://domain.vn/cuahang/index.php?frame=product&cat=185
http://domain.vn/cuahang/index.php?frame=product_detail&id=1426
Bây giờ mình muốn nó rewrite như thế này
http://domain.vn/cuahang/gioithieu.html
http://domain.vn/cuahang/do-noi-that/185.html
http://domain.vn/cuahang/chi-tiet/1426.html

các bạn giúp mình với . Là trong trường hợp này mình viết file .htaccess như thế nào . Và mình sửa link trong code như thế này đã đúng chưa

<a href="gioithieu.html">&nbsp;&nbsp;&nbsp;Giới thiệu </a>
Mong các bạn giúp dùm

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

Híc các bạn giúp mình với mình đang cần lắm




RewriteEngine on
# RewriteBase /rewrite
RewriteRule ^cuahang/gioithieu\.html$ index.php?frame=gioithieu
RewriteRule ^cuahang/([a-zA-Z0-9\-]+)/([0-9]+)\.html$ index.php?frame=product&cat=$2
RewriteRule ^cuahang/chi\-tiet/([0-9]+)\.html$ index.php?frame=product_detail&id=$1

danielt
25-09-2010, 22:24
Link thật của mình như thế này nè:
http://www.urweb.com/user/friend/daniel/index.php
http://www.urweb.com/user/normal/tommy/index.php
http://www.urweb.com/user/vip/janny/index.php

Bây giờ mình muốn nó rewrite như thế này:
http://www.urweb.com/frd-daniel/index.php
http://www.urweb.com/nor-tommy/index.php
http://www.urweb.com/vip-janny/index.php

Trong >> http://www.urweb.com/user/ co 3 folders friend, normal and vip. mình muốn ẩn và không cho người ta vào link thật.

các bạn giúp mình với . Là trong trường hợp này mình viết file .htaccess như thế nào . Và mình sửa link trong code như thế này đã đúng chưa

Híc các bạn giúp mình với mình đang cần lắm

vanninh1
20-11-2010, 14:36
Các bạn ơi giúp mình với.
Link thật cuả mình là
http://localhost/test/?page=product
http://localhost/test/?page=product&category_id=123
http://localhost/test/?page=product_detail&category_id=123&id=456

Bây giờ mình muốn rewrite lại thành
http://localhost/test/product/index.html
http://localhost/test/product/123/acer.html (Cái category_id=123 trong db có tên là Acer)
http://localhost/test/product_detail/123/456/acer-aspire-5570.html (sản phẩm có id=456 có tên là Acer Aspire 5570)

Mình chạy trên localhost thì nó không chạy được, chỉ chạy được trang chủ. Còn khi click vào cái link rewrite thì nó báo lỗi:

Bad Request

Your browser sent a request that this server could not understand.

File .htaccess của mình như sau:

RewriteEngine on
RewriteRule ^index.html+$ index.php
RewriteRule ^(.*)/index.html+$ index.php?page=$1
RewriteRule ^([a-zA-z]+)/([0-9]*)\.[a-zA-z0-9]+$ index.php?page=$1&category_id=$2
RewriteRule ^([a-zA-z]+)/([0-9]*)/(.*)\.[a-zA-z0-9]+$ index.php?page=$1&category_id=$2&id=$3
RewriteRule ^home/([0-9]+)/([0-9]+)/([a-zA-z0-9]+)\.[a-zA-z0-9]+$ index.php?page=$1&category_id=$2&id=$3&name=$4

vzic
20-11-2010, 15:20
Mình truyền thằng 1 tham số từ rewrite vào file php rồi bóc dữ liệu cho nó lành :D