6

Tôi đã googled tất cả mọi thứ, và tôi đã đọc rất nhiều câu trả lời khác nhau - một số tôi đã cố gắng để không có thành công. Tôi không phải là một lập trình viên chuyên nghiệp, nhưng tôi cảm ơn mọi người trong diễn đàn này đã dạy tôi rất nhiều về mọi thứ, từ jquery đến doctypes, để bạn đặt tên cho nó!Cách được khuyến nghị nhiều hơn để chuyển hướng 301 trong asp.net là gì?

Tôi có trang web được phát triển trong VWD 2010 Express. Tôi chỉ muốn biết 2 điều:

  1. Tôi biết đó là xấu cho công cụ tìm kiếm/nội dung trùng lặp đã yourdomain và www.yourdomain cả, vì vậy tôi muốn thiết lập một chuyển hướng 301 để nếu một người dùng cuối các loại trong mydomain, chúng được tự động chuyển hướng đến www.mydomain (với www).

  2. Tôi đã di chuyển một số trang không có trong thư mục gốc, nhưng trong các thư mục. Vì vậy, tôi muốn thay thế trang đã lỗi thời bằng vị trí mới. Tôi muốn thực hiện việc này bằng cách tự động chuyển hướng chúng từ www.mydomain/dịch vụ /engineering.aspx đến www.mydomain/sản phẩm /engineering.aspx.

Điều này có khó không? Có phải là (được khuyến nghị) để sử dụng .htaccess hoặc web.config hoặc một cái gì đó khác?

Cảm ơn bạn đã dành thời gian đọc sách này và tôi chân thành đánh giá cao mọi phản hồi.

Jason Weber

Trả lời

7

Trừ khi tôi đã hiểu lầm .htacess là dành cho Apache và nếu bạn đang mã hóa trong ASP.Net, bạn gần như chắc chắn đang sử dụng IIS. Vì vậy, igonore công cụ .htaccess trong nghiên cứu của bạn.

Bạn có thể sử dụng một số loại Trình ghi URL cho các chuyển hướng của mình nhưng điều đó có thể rất phức tạp. Nếu tôi là bạn tôi sẽ giữ nó càng đơn giản càng tốt và làm trang cũ của bạn 301 trong sự kiện Page_Load tức

protected void Page_Load(object sender, System.EventArgs e) 
{ 
    Response.Status = "301 Moved Permanently"; 
    Response.AddHeader("Location","http://www.domainname.com/new-page.aspx"); 
} 

Đối với chuyển hướng kinh điển của bạn (không www www), bạn có thể làm tương tự như trong Global.asax tập tin trong Application_BeginRequest để phát hiện các biến thể không www tức

if (HttpContext.Current.Request.Url.ToString().ToLower().Contains( 
    "http://mysite.com")) 
{ 
    HttpContext.Current.Response.Status = "301 Moved Permanently"; 
    HttpContext.Current.Response.AddHeader("Location", 
     Request.Url.ToString().ToLower().Replace( 
      "http://mysite.com", 
      "http://www.mysite.com")); 
} 

(đây không phải là mã của tôi nó đến từ here)

Đây là những gì tôi sẽ làm anyway - nó có lợi ích của việc dễ hiểu và giữ cho bạn ra khỏi con đường của bất kỳ cấu hình máy chủ web lạ mà thỉnh thoảng tôi tìm thấy một hộp đen.

+0

Thông tin tuyệt vời, Cua - được nhiều người đánh giá cao! Tôi cảm thấy khá câm vì không nhận ra những thứ .htaccess/apache, vì tôi đang ở trên một máy chủ Windows. Các thông tin và liên kết là tuyệt vời - lời khuyên hoàn hảo cho tình hình của tôi. Các chuyển hướng này không quá khó thực hiện. Cảm ơn một lần nữa cho thời gian của bạn! –

+0

@JasonWeber Không sao cả. Chúc may mắn với nó tất cả –

6

Vì bạn đang sử dụng VWD 2010 Express, bạn sẽ được hưởng lợi từ việc sử dụng phương thức .NET4 Response.RedirectPermanent (stringURL). Nó là một phần của đối tượng HttpResponse.

Nhiều tài liệu có sẵn ở đây: http://msdn.microsoft.com/en-us/library/system.web.httpresponse.redirectpermanent.aspx

chức năng này cùng là như Response.Redirect() tuy nhiên nó phát một mã số 301 cho khách hàng cùng với việc thực hiện chuyển hướng.

+0

Đó là hoàn hảo và dễ dàng - cảm ơn một tấn cho câu trả lời và liên kết, Kyle! –

+0

Và có, tôi đang ở trên .Net4.0 framework, vì vậy đây là một giải pháp hoàn hảo. –

-1

Làm điều này mà bạn muốn chuyển hướng trên 301

string url = "newpage.aspx"; 
     Response.Clear(); 
     Response.StatusCode = 301; 
     Response.RedirectLocation = url.ToLower(); 
     Response.End(); 

Sau đó sử dụng công cụ kiểm tra từ Chrome và kiểm tra trên "mạng" tab để xem Mã trạng thái. Nó phù hợp với tôi.

Các vấn đề liên quan