10/10/2018, 09:40

giúp mình rewrite URL

Hi.
Link hiện tại của mình là http://domain.com/site/Index.php?p=n...tId=1&newsId=2
giờ viết .htaccess thế nào để nó thành http://domain.com/site/news/1/2
Thanks
fotech_nd viết 11:47 ngày 10/10/2018
Dùng
PHP Code:
RewriteEngine on

RewriteCond 
%{REQUEST_FILENAME} !-f
RewriteCond 
%{REQUEST_FILENAME} !-d

RewriteRule 
^(***91;0-9a-zA-Z_-***93;+)/(\d+)/(\d+)$ Index.php?p=$1&catId=$2&newsId=$
Regards!!!
tungoso viết 11:48 ngày 10/10/2018
cảm ơn bạn, mình làm đc rồi, nhưng lại gặp phải vấn đề sau. Trên cái file news đó mình có 1 form để submit thông tin lên, và mình đặt hàm xử lý trong chính file đó (kiểu khi submit thì http://domain.com/site/Index.php?p=n...tId=1&newsId=2&act=update, và hậu quả là giờ khi chuyển link sang http://domain.com/site/news/1/2.html thì ko biết đặt cái action cho form kiểu gì, mình có thử action="?act=update" thì khi submit nó ra http://domain.com/site/news/1/2.html?act=update, nhưng hàm xử lý update trong file ko đc thực thi (trong file mình có đoạn if(act=="update"){...} )
Hơi lủng củng nhưng hy vọng các bạn hiểu.
hungn viết 11:40 ngày 10/10/2018
Khi submit bạn dùng code php để redirect theo url bạn đã rewrite là được
tungoso viết 11:49 ngày 10/10/2018
Được gửi bởi hungn
Khi submit bạn dùng code php để redirect theo url bạn đã rewrite là được
mình hơi gà, bạn có thể nói rõ hơn ko ? Cụ thể như trên thì mình phải chỉnh lại thế nào
fotech_nd viết 11:51 ngày 10/10/2018
Được gửi bởi tungoso
cảm ơn bạn, mình làm đc rồi, nhưng lại gặp phải vấn đề sau. Trên cái file news đó mình có 1 form để submit thông tin lên, và mình đặt hàm xử lý trong chính file đó (kiểu khi submit thì http://domain.com/site/Index.php?p=n...tId=1&newsId=2&act=update, và hậu quả là giờ khi chuyển link sang http://domain.com/site/news/1/2.html thì ko biết đặt cái action cho form kiểu gì, mình có thử action="?act=update" thì khi submit nó ra http://domain.com/site/news/1/2.html?act=update, nhưng hàm xử lý update trong file ko đc thực thi (trong file mình có đoạn if(act=="update"){...} )
Hơi lủng củng nhưng hy vọng các bạn hiểu.
Có thể dùng
PHP Code:
<form method="GET" action="http://domain.com/site/Index.php?p=news&catId=1&newsId=2&act=update">
...
</
form
=> tức là trong trường hợp này này ko rewrite url nữa

Hoặc là sửa lại file .htaccess như sau
PHP Code:
RewriteEngine on

RewriteCond 
%{REQUEST_FILENAME} !-f
RewriteCond 
%{REQUEST_FILENAME} !-d


RewriteRule 
^(***91;0-9a-zA-Z_-***93;+)/(\d+)/(\d+)$ index.php?p=$1&catId=$2&newsId=$3
RewriteRule 
^(***91;0-9a-zA-Z_-***93;+)/(\d+)/(\d+)/updateindex.php?p=$1&catId=$2&newsId=$3&action=update 
và action của form sẽ là
PHP Code:
<form method="GET" action="http://domain.com/site/ssss/1/2/update">
...
</
form
Regards!!!
tungoso viết 11:48 ngày 10/10/2018
Được gửi bởi fotech_nd
PHP Code:
RewriteEngine on

RewriteCond 
%{REQUEST_FILENAME} !-f
RewriteCond 
%{REQUEST_FILENAME} !-d


RewriteRule 
^(***91;0-9a-zA-Z_-***93;+)/(\d+)/(\d+)$ index.php?p=$1&catId=$2&newsId=$3
RewriteRule 
^(***91;0-9a-zA-Z_-***93;+)/(\d+)/(\d+)/updateindex.php?p=$1&catId=$2&newsId=$3&action=update 
và action của form sẽ là
PHP Code:
<form method="GET" action="http://domain.com/site/ssss/1/2/update">
...
</
form
cảm ơn pac đã nhiệt tình giúp đỡ, mình muốn làm theo cách trên nhưng không thành công, cụ thể của mình đang như sau
PHP Code:
RewriteRule ^chu-de/(***91;0-9a-zA-Z+-***93;+).html$ ?p=category&catURL=$1
RewriteRule 
^tin-tuc/(***91;0-9a-zA-Z+-***93;+)/(***91;0-9a-zA-Z+-***93;+).html$ ?p=news&catURL=$1&newsURL=$
2 cái trên đã giúp mình làm đc 2 link như sau
PHP Code:
domain.com/chu-de/ten-chu-de.html
domain
.com/tin-tuc/ten-chu-de/ten-ban-tin.html 
giờ vấn đề là làm sao để khi xem bản tin ở dạng domain.com/tin-tuc/ten-chu-de/ten-ban-tin.html thì khi submit lên nó vẫn thực hiện hàm update.

Thanks again.
fotech_nd viết 11:53 ngày 10/10/2018
- Trong form để action bằng rỗng
- Đặt method của form là post
- Thêm hidden input (name="action" và value="update")

Regards!
tungoso viết 11:55 ngày 10/10/2018
Được gửi bởi fotech_nd
- Trong form để action bằng rỗng
- Đặt method của form là post
- Thêm hidden input (name="action" và value="update")

Regards!
trơi ơi, pac tuyệt quá, working rồi pac ạ. Thanks

Nhưng mà lại nảy sinh cái mới các pac ơi.
Hiện tại như đã nói ở trên, cái
Code:
RewriteRule ^chu-de/([0-9a-zA-Z+-]+).html$ ?p=category&catURL=$1
là để có link
Code:
domain.com/chu-de/ten-chu-de.html
mọi thứ OK, nhưng có vấn đề khi chuyển qua trang 2 của chủ đề, code cũ khi ko dùng rewrite là
Code:
?p=category&catURL=abc&currentPage=2
giờ làm sao để sang trang tiếp theo khi ở link dạng domain.com/chu-de/ten-chu-de.html các pac ơi ? Có thể làm thành domain.com/chu-de/ten-chu-de/trang-2.html thì tốt .

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

hihi, làm đc rồi các pác ạ, thêm dòng này nữa là ok
Code:
RewriteRule ^chu-de/([0-9a-zA-Z+-]+)/trang-([0-9a-zA-Z+-]+).html$ ?p=category&catURL=$1&currentPage=$2
khi đó qua trang khác sẽ là domain.com/chu-de/ten-chu-de/trang-2.html

Bài liên quan
0