PDA

View Full Version : Xin giúp đỡ về URL Rewrite trong asp.net



soft360.vn
15-06-2009, 12:17
Chào các bạn. Mình biết vấn đề này đã bàn nhiều, nhưng mình không chắc hầu hết các newbie có thể hiểu hết được. Mình đọc đọc rất nhiều về các giải pháp về URL rewrite sao cho frienly với SEO. Nhưng vẫn không sao thực hiện được. Vấn đề gặp phải là nó không hiểu đường đường dẫn của CSS, Images, và sự kiện post back tự động quay lại url page ẩn.
Bạn nào có đã từng làm, có kinh nghiệm về cái này, cho một giải pháp tổng thể có thể chia sẽ được không?, step by step thì càng tốt.
vd: http://doanhnghiep.com/product.aspx?cat=15&id=105
Mình muốn chuyển URL thành là:
http://doanhnghiep.com/product/Linh-kien-May-tinh/HDD1
(Ung voi cat=15 la Linh-kien-May-tinh & id = 105 la HDD1
Mong các bạn giúp đỡ!
Trân trọng.

dxt49
15-06-2009, 13:41
về vấn đề đường dẫn CSS,image thì bạn phải sử dụng đường dẫn tuyệt đối tức là có dầu / ở phía trước đường dẫn hình ảnh.
Bình thường bạn để đường dẫn là "images/hính.jpg"
thì đổi lại là "/images/hình.jpg"
Tương tự với css cũng vậy.
Mình cũng mới chỉ giải quyết được vấn đề này thôi. Còn postback mình cũng chưa biết. Bạn nào biết thì chia sẻ đi.
thanks

soft360.vn
15-06-2009, 13:51
Cảm ơn bạn rất nhiều,dể mình thử lại, nhưng không biết bạn dùng công cụ gì? Bạn nào có kinh nghiệm có thể giúp tiếp không?

dxt49
15-06-2009, 14:01
dùng công cụ nào thì đường dẫn vẫn vậy thôi. trên mạng có rất nhiều đó. bạn vào google search --> url rewrute asp.net là có ngay thôi.

awasjsc
15-06-2009, 14:23
http://coder.awas.vn/topic/88_rewrite_url.aspx

soft360.vn
16-06-2009, 22:08
OK. Mình đã dùng Application_BeginRequest trong Global viết URL Rewrite OK hết rồi. Tất cả chạy good ở localhost, nhưng khi chạy trên hosting lỗi HTTP 404 liền tất cả các link. Nhờ các bạn giúp đỡ tiếp, xin cảm ơn. Mình toàn quyền dùng IIS trên hosting.

badpaybad
16-06-2009, 22:25
mình đang bị lỗi như vầy nếu dùng virtual server của bộ Visual studio thì nó chạy ok http://localhost:2345/badpaybad
tuy vậy chạy http://localhost/site/badpaybad
thì bị lỗi not found 404

soft360.vn
16-06-2009, 22:38
Nói thêm nữa là các link của mình có dạng:
1.http://abc.com/bcd/
2.http://abc.com/bcd/def/fgh
3.http://abc.com/bcd/abd-bcd-def.html
Chạy tốt hết trên localhost mà đưa lên hosting không chạy được, mình chỉ làm chạy được các link có .html, còn dạng 1 và 2 thì không đưoc, xin chỉ giáo.

dxt49
17-06-2009, 08:46
bạn soft360.vn có thể cho mình xem đoạn code rewrite của bạn được ko?

Code4Gruel
17-06-2009, 09:22
mình đang bị lỗi như vầy nếu dùng virtual server của bộ Visual studio thì nó chạy ok http://localhost:2345/badpaybad
tuy vậy chạy http://localhost/site/badpaybad
thì bị lỗi not found 404

Khi bạn chạy trên môi trường do Virtual Studio tạo ra thì .Net sẽ handle hết các request. Nhưng khi chạy trên IIS (http://localhost/site/badpaybad) thì IIS sẽ handle đầu tiên, mặc định khi bạn request đến URL http://localhost/site/badpaybad thì IIS sẽ nhận thấy ko có thư mục nào tên là badpaybad cả nên nó sẽ trả về trang 404 thôi.

Ví dụ nếu bạn rewrite theo kiểu này :http://localhost/site/badpaybad.aspx, thì IIS sẽ biết đây là 1 file của .NET, nên nó sẽ chuyển qua cho .Net xử lí, và khi .Net xử lí thì mặc dù file badpaybad.aspx ko tồn tại trên server nhưng nó ko trả về trang lỗi 404 vì .Net đã đọc được config của bạn về việc rewrite nên nó sẽ chuyển hướng gọi 1 trang khác khi nhận được cái URL trên.

Nếu bạn muốn rewrite theo dạng thu mục kiểu này, bạn phải config lại IIS, chuyển toàn bộ request đến server sang cho .Net xử lí, vậy thì mới rewrite được. Nhưgn nếu làm kiểu này thì phải cẩn thận về CSS và Javascript bị mất đường dẫn.

badpaybad
17-06-2009, 14:12
bạn có thể nói rõ hơn về cách config IIS chuyển request sang .net cụ thể như thế nào dc ko.
ths.

Code4Gruel
17-06-2009, 22:55
Bạn tìm đọc thêm về cái ISAPI.
IIS 6 thì hình như config đơn giản hơn.
Còn IIS 7 thì hình như Microsoft đã support cho chuyện này, mình cũng ko rõ vì chưa làm trên IIS 7, nhưng có đọc qua tài liệu thấy nó bảo thế.

Ah mà nên xài HTTPModule để Rewrite chứ ko nên xài file Global.
Còn phải tính đến cả chuyện PostBack URL sau khi Rewrite nữa

soft360.vn
19-06-2009, 18:39
Bạn có thể giải thích tại sao phải dùng httpmodule đẻ rewrite chứ không dùng Global không? Mình dùng Global đang hoạt động rất tốt.
Còn duy nhất 1 cái mà chưa xong, đó là postback URL, bạn nào đã từng làm chỉ giáo với.

awasjsc
22-06-2009, 01:28
thêm
http://coder.awas.vn/topic/236_URL_Rewrite_trong_VSP.aspx

soft360.vn
22-06-2009, 12:07
Bạn có thể giải thích tại sao phải dùng httpmodule đẻ rewrite chứ không dùng Global không? Mình dùng Global đang hoạt động rất tốt.
Còn duy nhất 1 cái mà chưa xong, đó là postback URL, bạn nào đã từng làm chỉ giáo với.

dear awasjsc: link đó đâu có câu trả lời cho mình gì đâu, Ai biết giúp đỡ nhiệt tình nhaaa. Cảm ơn.

vietcode
09-10-2010, 16:26
Khi bạn chạy trên môi trường do Virtual Studio tạo ra thì .Net sẽ handle hết các request. Nhưng khi chạy trên IIS (http://localhost/site/badpaybad) thì IIS sẽ handle đầu tiên, mặc định khi bạn request đến URL http://localhost/site/badpaybad thì IIS sẽ nhận thấy ko có thư mục nào tên là badpaybad cả nên nó sẽ trả về trang 404 thôi.

Ví dụ nếu bạn rewrite theo kiểu này :http://localhost/site/badpaybad.aspx, thì IIS sẽ biết đây là 1 file của .NET, nên nó sẽ chuyển qua cho .Net xử lí, và khi .Net xử lí thì mặc dù file badpaybad.aspx ko tồn tại trên server nhưng nó ko trả về trang lỗi 404 vì .Net đã đọc được config của bạn về việc rewrite nên nó sẽ chuyển hướng gọi 1 trang khác khi nhận được cái URL trên.

Nếu bạn muốn rewrite theo dạng thu mục kiểu này, bạn phải config lại IIS, chuyển toàn bộ request đến server sang cho .Net xử lí, vậy thì mới rewrite được. Nhưgn nếu làm kiểu này thì phải cẩn thận về CSS và Javascript bị mất đường dẫn.

Bạn nói quá chuẩn, vào IIS, bạn bỏ ô checkbox "Check that file exist" như trong ví dụ này là dc http://thuvienit.com/5457.html, còn nếu mua host thì mình ko config, ai có cách giải quyết tốt hơn ko, post lên để anh em tham khảo.

Scorpion.vn
15-01-2011, 22:36
Mình đang viết một bài để hướng dẫn step by step khi rewrite url, các lỗi thường gặp ở đây http://lichsu.vn/0/38/Mot-so-loi-thuong-gap-khi-rewrite-url-trong-ASP-Net--su-dung-UrlRewritingNet-.html Mọi người vào tham khảo và cho ý kiến nhé!

fsviet
16-01-2011, 01:53
khi đưa lên host nên để đuôi là aspx, ashx, asmx .... (miễn sao thuộc những loại mà dc chỉ định cho .net handle)
Còn để cấu hình rewrite cho đơn giản thì dùng http://urlrewriter.net/

scorpion82
17-01-2011, 15:57
Chào các bạn. Mình biết vấn đề này đã bàn nhiều, nhưng mình không chắc hầu hết các newbie có thể hiểu hết được. Mình đọc đọc rất nhiều về các giải pháp về URL rewrite sao cho frienly với SEO. Nhưng vẫn không sao thực hiện được. Vấn đề gặp phải là nó không hiểu đường đường dẫn của CSS, Images, và sự kiện post back tự động quay lại url page ẩn.
Bạn nào có đã từng làm, có kinh nghiệm về cái này, cho một giải pháp tổng thể có thể chia sẽ được không?, step by step thì càng tốt.
vd: http://doanhnghiep.com/product.aspx?cat=15&id=105
Mình muốn chuyển URL thành là:
http://doanhnghiep.com/product/Linh-kien-May-tinh/HDD1
(Ung voi cat=15 la Linh-kien-May-tinh & id = 105 la HDD1
Mong các bạn giúp đỡ!
Trân trọng.

Mình có dùng Intelligencia.UrlRewriter cho rewrite url, bản này có hướng dẫn chi tiết việc cấu hình các url và việc tắt các image, css, js chỉ 1 lệnh cấu hình là xong.
Còn vấn đề cấu hình cái url của bạn mình nghĩ bạn nên chuyển tất cả các cat=15&id=105 thành cat=Linh-kien-May-tinh&id=HDD1 thì khi đó việc sử dụng rewrite url sẽ tốt hơn.