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ứ.
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)
Mình có trang web đường dẫn như thế này
/index.php?frame=new_member
và
/?frame=product&cat=185
và
?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
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
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"> 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
Không có giúp mình hết sao . Các cao thủ giúp mình với
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"> 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
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
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
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.