Việc đưa HTML từ trang chuyển hướng 301 vào tài liệu sẽ thực hiện chức năng tương tự như chuyển hướng 301 thực sự?


15

Trong trình gỡ lỗi web, html của trang chuyển hướng 301 hiển thị dưới dạng:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://www.website.com/webpage.htm">here</a>.</p>
</body></html>

Tôi phải chuyển hướng các trang html mà không cần hỗ trợ máy chủ. Nếu tôi thay thế các trang html bằng mã ở trên, liệu nó có hoạt động giống như viết 301 chuyển hướng trong .htaccess trên apache không? Tôi đã tìm kiếm điều này trên google, nhưng các trang web nói về 301 chuyển hướng không bao gồm tùy chọn này để chuyển hướng các trang html.

Câu trả lời:


18

Lý tưởng nhất là bạn sẽ gửi mã trạng thái phản hồi 301 HTTP. Nếu bạn không thể làm điều đó, một meta refresh ngay lập tức cũng sẽ hoạt động và được tính là chuyển hướng 301 hoặc 302 tùy thuộc vào công cụ tìm kiếm .

<meta http-equiv="refresh" content="0;url=http://example.com/new.html">

Tốc độ làm mới phải bằng 0 để được coi là chuyển hướng 30x.


Cảm ơn, bài viết đó nói lên quá trình thực sự tốt. 0 làm mới meta meta bên trong ví dụ html của tôi ở trên = poor man's 301.
JMC

10

Không, chỉ cần thay thế HTML bằng ví dụ của bạn sẽ không đạt được hiệu quả mà bạn đang tìm kiếm. Nó chỉ đơn giản sẽ hiển thị trang đó cho người dùng, vì Apache sẽ gửi mã trạng thái '200' cùng với nó. Người dùng sẽ có thể nhấp vào liên kết để tìm trang nhưng nó sẽ không tự động xảy ra và các con nhện sẽ không biết rằng bạn có nghĩa là thực hiện chuyển hướng vĩnh viễn tài nguyên.

Bạn sẽ cần sử dụng một lệnh Redirect hoặc _mod_rewrite_ thích hợp trong các tệp .htaccess hoặc Apache conf của bạn .

Ngoài ra, nếu bạn thực sự đang sử dụng PHP hoặc một cái gì đó tương tự, bạn có thể đặt mã trả về thành 301, xuất ra tiêu đề phản hồi Vị trí và sau đó giải pháp dựa trên trang của bạn sẽ hoạt động. Trong PHP nó sẽ trông giống như thế này:

<?php
header( "HTTP/1.1 301 Moved Permanently" );
header( "Location: http://www.new-url.com" );

+1 Điểm tốt về 200 mã trạng thái. Không nghĩ về điều đó. Thật không may, đó là một máy chủ IIS và tôi không có quyền truy cập sâu hơn ftp. Các trang là .html vì vậy một chuyển hướng asp sẽ không xử lý.
JMC

Trong trường hợp đó, câu trả lời của John Conde là tốt nhất - Tôi đã quên về tính tương đương của meta refresh.
Hissohathair

3

Đồng ý với Hissohathair ở chỗ cách tiếp cận của bạn sẽ không thực sự chuyển hướng. Người dùng có thể biết nhấp vào liên kết, nhưng trang gốc vẫn sẽ trả về mã trạng thái '200' bình thường và tiếp tục hiển thị trên kết quả tìm kiếm (có thể không hoàn toàn như bạn muốn).

Để duy trì thứ hạng trang, 301 mã trạng thái là cực kỳ quan trọng. Thêm thẻ làm mới meta cũng là một tùy chọn tốt và có thể giúp ích trong hầu hết các trường hợp (theo phản hồi của John), nhưng bạn có thể không được đảm bảo rằng các công cụ tìm kiếm sẽ chấp nhận chuyển hướng 301 trong tương lai. Thêm các chuyển hướng thích hợp vào .htaccess (hoặc các tệp conf của Apache) sẽ là lựa chọn tốt nhất của bạn để đảm bảo mã trạng thái 301 được gửi.

Biên tập:

=======================

Đối với trang web IIS7, miễn là mô-đun Viết lại URL IIS được cài đặt, bạn có thể tạo quy tắc chuyển hướng trong web.config cho trang web. Các quy tắc này cũng sẽ áp dụng cho các tệp .html. Thêm thông tin ở đây:

http://learn.iis.net/page.aspx/461/creating-rewrite-rules-for-the-url-rewrite-module/

=======================

Một cách khác nếu máy chủ web của bạn không có khả năng .htaccess / mod_rewrite có thể là thay đổi máy chủ web bạn đang sử dụng, nơi bạn có thể thiết lập chuyển hướng phía máy chủ. Miễn là trang web được di chuyển đúng cách, nó sẽ khá liền mạch với người dùng của bạn. Cách tiếp cận này sẽ chỉ dành cho các trường hợp cực đoan nếu việc duy trì thứ hạng trang là rất quan trọng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.