Hướng dẫn SEO kỹ thuật để chuyển hướng

Tìm hiểu cách xử lý các chuyển hướng một cách chính xác để tránh mất thứ hạng và giúp các công cụ tìm kiếm hiểu những thay đổi bạn đã thực hiện trên trang web của mình.

Các trang web thay đổi cấu trúc, xóa trang và thường chuyển từ tên miền này sang tên miền khác. Xử lý các chuyển hướng một cách chính xác là rất quan trọng để tránh mất thứ hạng và giúp các công cụ tìm kiếm hiểu những thay đổi bạn đã thực hiện.

Chuyển hướng có mã trạng thái bắt đầu bằng số ba (tức là 3XX). Có 100 mã trạng thái có thể có khác nhau nhưng chỉ một số được triển khai để mang một số thông tin nhất định.

Trong hướng dẫn này, chúng tôi sẽ đề cập đến các chuyển hướng 3XX có liên quan đến SEO.

301: Đã di chuyển vĩnh viễn

Chuyển hướng nổi tiếng này chỉ ra cho khách hàng * rằng tài nguyên đã được thay đổi sang vị trí khác và tài nguyên sẽ sử dụng URL mới cho các yêu cầu trong tương lai. Khi các công cụ tìm kiếm nhìn thấy chuyển hướng 301, chúng sẽ chuyển xếp hạng của trang cũ sang trang mới.

Trước khi thực hiện thay đổi, bạn cần cẩn thận khi quyết định sử dụng chuyển hướng 301. Điều này là do nếu bạn thay đổi ý định sau đó và quyết định xóa chuyển hướng 301, URL cũ của bạn có thể không xếp hạng nữa.

Ngay cả khi bạn hoán đổi các chuyển hướng, nó sẽ không giúp bạn đưa trang cũ trở lại vị trí xếp hạng trước đó của nó. Vì vậy, điều chính cần nhớ là không có cách nào để hoàn tác chuyển hướng 301.

(* Đối với những người mới bắt đầu, những người có thể nhầm lẫn với ứng dụng khách tên chung được sử dụng thay vì trình duyệt vì không chỉ các trình duyệt có thể duyệt URL mà còn cả các bot của công cụ tìm kiếm không phải là trình duyệt.)

307: Chuyển hướng tạm thời

Trong HTTP 1.1, chuyển hướng 301 có nghĩa là tài nguyên tạm thời được di chuyển và khách hàng nên sử dụng URL của tài nguyên ban đầu cho các yêu cầu trong tương lai.

Đối với SEO, điều này có nghĩa là khách hàng nên đi theo một chuyển hướng nhưng các công cụ tìm kiếm không nên cập nhật các liên kết của họ trong SERPs sang trang mới, tạm thời.

Trong chuyển hướng 307, Xếp hạng trang không được chuyển từ tài nguyên ban đầu sang tài nguyên mới – trái với chuyển hướng 301.

302: Tìm thấy

Điều này có nghĩa là tài nguyên mà khách hàng đang tìm kiếm đã được tìm thấy trên một URL khác trong phiên bản HTTP 1.1 nhưng tạm thời đã được chuyển sang HTTP 1.0.

302 so với 307

Trong hầu hết các trường hợp, chuyển hướng 302 và 307 sẽ được xử lý giống nhau. Nhưng mã trạng thái 302 không nhất thiết có nghĩa là khách hàng phải đi theo một chuyển hướng và nó không bị coi là lỗi nếu nó quyết định ở lại đó.

Các khách hàng hiện đại rất có thể sẽ đi theo đích mới nhưng một số khách hàng cũ có thể ở trên cùng một URL không chính xác.

Trái ngược với mã trạng thái 302, mã trạng thái 307 đảm bảo rằng phương thức yêu cầu sẽ không bị thay đổi. Ví dụ: yêu cầu GET phải tiếp tục GET và POST đến POST.

Với mã trạng thái 302, một số ứng dụng khách cũ hoặc có lỗi có thể thay đổi phương pháp, điều này có thể gây ra hành vi không mong muốn.

Đối với chuyển hướng tạm thời, bạn có thể sử dụng 302 hoặc 307 – nhưng tôi thích 307 hơn.

Đối với các tác vụ chuyển hướng thông thường, mã trạng thái 301 (chuyển hướng vĩnh viễn) và 307 (chuyển hướng tạm thời) nên được sử dụng tùy thuộc vào loại thay đổi bạn đang thực hiện trên trang web của mình. Trong cả hai trường hợp, cú pháp của chuyển hướng không thay đổi.

Bạn có thể xử lý chuyển hướng qua tệp cấu hình máy chủ .htaccess trên Apache, tệp example.conf trên Nginx hoặc thông qua plugin nếu bạn đang sử dụng WordPress.

Trong tất cả các trường hợp, chúng có cùng một cú pháp để viết các quy tắc chuyển hướng. Chúng chỉ khác nhau với các lệnh được sử dụng trong các tệp cấu hình. Ví dụ: chuyển hướng trên Apache sẽ giống như sau:

Tùy chọn + Theo dõi
RewriteEngine bật
RedirectMatch 301 ^ / oldfolder / / newfolder /
(Bạn có thể đọc về các liên kết tượng trưng tại đây).

Trên máy chủ Nginx, nó sẽ giống như sau:

viết lại ^ / oldfolder / / newfolder / vĩnh viễn;
Các lệnh được sử dụng để thông báo cho máy chủ mã trạng thái chuyển hướng và lệnh hành động khác nhau. Ví dụ:

  • Mã trạng thái máy chủ của chuyển hướng: “301 ″ so với“ vĩnh viễn ”
  • Lệnh hành động: “RedirectMatch” so với “rewrite”.
  • Nhưng cú pháp của chuyển hướng (^ / oldfolder / / newfolder /) là giống nhau cho cả hai.

Trên Apache, hãy đảm bảo rằng các mô-đun mod_rewrite và mod_alias trên máy chủ của bạn (chịu trách nhiệm xử lý chuyển hướng) được bật.

Vì loại máy chủ phổ biến rộng rãi nhất là Apache, đây là ví dụ cho các tệp apache .htaccess. Đảm bảo rằng tệp .htaccess có hai dòng sau:

Tùy chọn + Theo dõi
RewriteEngine bật

phía trên các quy tắc chuyển hướng và đặt các quy tắc bên dưới chúng.

Để hiểu các ví dụ dưới đây, bạn có thể tham khảo bảng sau về khái niệm cơ bản của RegExp.

* không hoặc nhiều lần
+ Một hoặc nhiều lần
. bất kỳ ký tự đơn lẻ nào
? Không hoặc một lần
^ Bắt đầu chuỗi
$ Cuối chuỗi
a | b HOẶC operadn “|” a hoặc b
(z) ghi nhớ kết quả phù hợp sẽ được sử dụng khi gọi $ 1

Chuyển hướng một URL

Loại chuyển hướng phổ biến và được sử dụng rộng rãi nhất được sử dụng khi xóa trang hoặc thay đổi URL trang. Ví dụ: giả sử bạn đã thay đổi URL từ / old-page / thành / new-page /. Quy tắc chuyển hướng sẽ là:

RewriteRule ^ old-page (/? | /.*)$ / new-page / [R = 301, L]

HOẶC

RedirectMatch 301 ^ / old-page (/? | /.*)$ / new-page /

Sự khác biệt duy nhất giữa hai phương pháp là phương pháp đầu tiên sử dụng mô-đun mod_rewrite của Apache và phương pháp thứ hai sử dụng mod_alias. Nó có thể được thực hiện bằng cả hai phương pháp.

Cụm từ thông dụng “^” có nghĩa là URL phải bắt đầu bằng “/ old-page” trong khi (/?|/.*)$ cho biết rằng bất kỳ thứ gì theo sau “/ old-page /” có dấu gạch chéo “/” hoặc không có kết quả khớp chính xác đều phải được chuyển hướng sang / new-page /.

Chúng tôi cũng có thể sử dụng (. *) Tức là ^ / old-page (. *), Nhưng vấn đề là, nếu bạn có một trang khác có URL tương tự như / old-page-other /, nó cũng sẽ được chuyển hướng khi chúng tôi chỉ muốn chuyển hướng / trang cũ /.

Các URL sau sẽ khớp và được chuyển hướng đến một trang mới:

/ old-page / / new-page /
/ old-page / new-page /
/old-page/?utm_source=facebook.com /new-page/?utm_source=facebook.com
/ old-page / child-page / / new-page /

Nó sẽ chuyển hướng bất kỳ biến thể nào của URL trang đến một biến thể mới. Nếu chúng tôi sử dụng chuyển hướng ở dạng sau:

Chuyển hướng 301 / trang cũ / / trang mới /

… Không có biểu thức chính quy thì tất cả các URL có chuỗi truy vấn UTM, ví dụ: /old-page?utm_source=facebook.com (điều này khá phổ biến vì URL được sử dụng để chia sẻ qua mạng xã hội), nó sẽ kết thúc là 404.

Trang chẵn / cũ không có dấu gạch chéo “/” sẽ kết thúc là 404.

Chuyển hướng Tất cả Ngoại trừ

Giả sử chúng tôi có nhiều URL như / category / old-subcategory-1 /, / category / old-subcategory-2 /, / category / final-subcategory / và muốn hợp nhất tất cả các danh mục phụ thành / category / final-subcategory /. Chúng tôi cần quy tắc “tất cả ngoại trừ” ở đây.

RewriteCond% {REQUEST_URI}! / Category / final-subcategory /
RewriteCond% {REQUEST_FILENAME}! -F
RewriteRule ^ (danh mục /). / category / final-subcategory / [R = 301, L]

Ở đây, chúng tôi muốn chuyển hướng tất cả dưới / category / trên dòng thứ ba ngoại trừ nếu nó là / category / final-subcategory / trên dòng thứ tư. Chúng tôi cũng có quy tắc “! -F” trên dòng thứ hai có nghĩa là bỏ qua bất kỳ tệp nào như tệp hình ảnh, tệp CSS hoặc javascript.

Nếu không, nếu chúng ta có một số nội dung như “/category/image.jpg” thì nó cũng sẽ được chuyển hướng đến “/ final-subcategory /” và gây ra lỗi hình ảnh.

Thay đổi thư mục

Trong trường hợp bạn đã thực hiện tái cấu trúc danh mục và muốn chuyển mọi thứ trong thư mục cũ sang thư mục mới, bạn có thể sử dụng quy tắc bên dưới.

RewriteRule ^ old-directory $ / new-directory / [R = 301, NC, L] RewriteRule ^ old-directory /(.*)$ / new-directory / $ 1 [R = 301, NC, L]

Tôi đã sử dụng $ 1 trong target để nói với máy chủ rằng nó nên nhớ mọi thứ trong URL theo sau / old-directory / (ví dụ: / old-directory / subdirectory /) và chuyển nó (tức là, “/ subdirectory /”) vào Nơi Đến. Kết quả là, nó sẽ được chuyển hướng đến / new-directory / subdirectory /.

Tôi đã sử dụng hai quy tắc: một trường hợp không có dấu gạch chéo ở cuối và một trường hợp khác có dấu gạch chéo.

Tôi có thể kết hợp chúng thành một quy tắc bằng cách sử dụng (/?|.*)$ RegExp ở cuối, nhưng nó sẽ gây ra sự cố và thêm dấu gạch chéo “//” vào cuối URL khi URL được yêu cầu không có dấu gạch chéo có chuỗi truy vấn (tức là “/ old-directory? utm_source = facebook” sẽ được chuyển hướng đến “/ new-directory //? utm_source = facebook”).

Xóa một từ khỏi URL

Giả sử bạn có 100 URL trên trang web của mình với tên thành phố “chi Chicago” và muốn xóa nó.

Ví dụ, đối với URL http://yourwebiste.com/example-chi Chicago-event/, quy tắc chuyển hướng sẽ là:

Quy tắc viết lại ^ (. *) – chi Chicago – (. *) Http: //% {SERVER_NAME} / $ 1- $ 2 [NC, R = 301, L] Nếu URL mẫu có dạng http: // yourwebiste.com/example/chi Chicago/event/, thì chuyển hướng sẽ là:

Quy tắc viết lại ^ (. *) / Chi Chicago /(.*) http: //% {SERVER_NAME} / $ 1 / $ 2 [NC, R = 301, L]

Hợp thức hóa

Có URL chuẩn là phần quan trọng nhất của SEO.

Nếu thiếu nó, bạn có thể gây nguy hiểm cho trang web của mình với các vấn đề nội dung trùng lặp vì các công cụ tìm kiếm coi các URL có phiên bản “www” và “không phải www” là các trang khác nhau có cùng nội dung.

Do đó, bắt buộc phải đảm bảo rằng bạn chỉ chạy trang web với một phiên bản bạn chọn.

Nếu bạn muốn chạy trang web của mình với phiên bản “www”, hãy sử dụng quy tắc sau:

RewriteCond% {HTTP_HOST} ^ yourwebsite \ .com [NC] Quy tắc viết lại ^ (. *) $ Http://www.yourwebsite.com/$1 [L, R = 301]

Đối với phiên bản “không có www”:

RewriteCond% {HTTP_HOST} ^ www \ .yourwebsite \ .com [NC] Quy tắc viết lại ^ (. *) $ Http://yourwebsite.com/$1 [L, R = 301]

Dấu gạch chéo cũng là một phần của quá trình chuẩn hóa vì các URL có dấu gạch chéo ở cuối hoặc không có dấu gạch chéo cũng được xử lý khác nhau.

RewriteCond% {REQUEST_FILENAME}! -F
Quy tắc viết lại ^ (. * [^ /]) $ / $ 1 / [L, R = 301]

Điều này sẽ đảm bảo / example-page được chuyển hướng đến / example-page /. Bạn có thể chọn xóa dấu gạch chéo thay vì thêm, sau đó bạn sẽ cần quy tắc khác bên dưới:

RewriteCond% {REQUEST_FILENAME}! -D
Quy tắc viết lại ^ (. *) / $ / $ 1 [L, R = 301] Chuyển hướng HTTP sang HTTPS

Sau sáng kiến ​​của Google nhằm khuyến khích chủ sở hữu trang web sử dụng SSL, việc chuyển sang HTTPS là một trong những cách chuyển hướng thường được sử dụng mà hầu hết mọi trang web đều có.

Quy tắc viết lại bên dưới có thể được sử dụng để buộc HTTPS trên mọi trang web.

RewriteCond% {HTTP_HOST} ^ yourwebsite \ .com [NC, OR] RewriteCond% {HTTP_HOST} ^ www \ .yourwebsite \ .com [NC]

Quy tắc viết lại ^ (. *) $ Https://www.yourwebsite.com/$1 [L, R = 301, NC] Về cơ bản, bạn có thể kết hợp chuyển hướng phiên bản có www hoặc không có www thành một quy tắc chuyển hướng HTTPS bằng cách sử dụng quy tắc này.

Chuyển hướng từ miền cũ sang miền mới

Đây cũng là một trong những chuyển hướng được sử dụng nhiều nhất khi bạn quyết định đổi thương hiệu và bạn cần thay đổi miền của mình. Quy tắc dưới đây chuyển hướng old-domain.com đến new-domain.com.

RewriteCond% {HTTP_HOST} ^ old-domain.com $ [HOẶC] RewriteCond% {HTTP_HOST} ^ www.old-domain.com $
Quy tắc viết lại (. *) $ Http://www.new-domain.com/$1 [R = 301, L]

Nó sử dụng hai trường hợp: một trường hợp có phiên bản “www” của URL và một trường hợp khác “không phải www” vì bất kỳ trang nào vì lý do lịch sử đều có thể có các liên kết đến cả hai phiên bản.

Hầu hết chủ sở hữu trang web sử dụng WordPress và có thể không cần sử dụng tệp .htaccess để chuyển hướng mà sử dụng plugin thay thế.

Việc xử lý chuyển hướng bằng cách sử dụng plugin có thể hơi khác so với những gì chúng ta đã thảo luận ở trên và bạn có thể cần đọc tài liệu của họ để có thể xử lý RegExp một cách chính xác cho plugin cụ thể.

Từ những cái hiện có, tôi muốn giới thiệu một plugin miễn phí có tên Redirection có nhiều tham số để kiểm soát các quy tắc chuyển hướng và nhiều tài liệu hữu ích.

Chuyển hướng thực tiễn xấu

1. Chuyển hướng Tất cả 404 URL bị hỏng đến Trang chủ

Trường hợp này thường xảy ra khi bạn lười điều tra tất cả các URL 404 của mình và ánh xạ chúng đến trang đích thích hợp.

Theo Google, tất cả chúng vẫn được coi là 404.

Nếu bạn có quá nhiều trang như thế này, bạn nên cân nhắc tạo các trang 404 đẹp mắt và thu hút người dùng duyệt thêm hoặc tìm thứ gì đó khác với những gì họ đang tìm kiếm bằng cách hiển thị tùy chọn tìm kiếm.

Google đặc biệt khuyến nghị rằng nội dung trang được chuyển hướng phải tương đương với trang cũ. Nếu không, chuyển hướng đó có thể được coi là soft 404 và bạn sẽ mất thứ hạng của trang đó.

2. Chuyển hướng cụ thể trên trang dành cho thiết bị di động sai

Nếu bạn có các URL khác nhau cho các trang web trên máy tính để bàn và thiết bị di động (tức là “yourite.com” cho máy tính để bàn và “m.yoursite.com” cho điện thoại di động), bạn nên đảm bảo chuyển hướng người dùng đến trang thích hợp của phiên bản dành cho thiết bị di động.

Sửa: “yourite.com/sport/” thành “m.yoursite.com/sport/”
Sai: “yoursite.com/sport/” thành “m.yoursite.com”

Ngoài ra, bạn phải đảm bảo rằng nếu một trang là 404 trên máy tính để bàn thì trang đó cũng phải là 404 trên thiết bị di động.

Nếu bạn không có phiên bản dành cho thiết bị di động cho một trang, bạn có thể tránh chuyển hướng đến phiên bản dành cho thiết bị di động và giữ chúng trên trang dành cho máy tính để bàn.

3. Sử dụng Meta Refresh

Có thể thực hiện chuyển hướng bằng cách sử dụng thẻ làm mới meta như ví dụ bên dưới:

<meta http-equiv = ”refresh” content = ”0; url = http: //yoursite.com/new-page/” />

Nếu bạn chèn thẻ này vào / old-page /, nó sẽ chuyển hướng người dùng ngay lập tức đến / new-page /. Chuyển hướng này không bị Google cấm nhưng rõ ràng họ không khuyên bạn nên sử dụng nó.

Theo John Mueller, các công cụ tìm kiếm có thể không nhận ra loại chuyển hướng đó một cách chính xác. Điều này cũng đúng với chuyển hướng JavaScript.

4. Quá nhiều chuyển hướng

Thông báo này hiển thị khi bạn thiết lập biểu thức chính quy sai và nó kết thúc trong một vòng lặp vô hạn.

Trang này không hoạt động

Thông thường, điều này xảy ra khi bạn có một chuỗi chuyển hướng.

Giả sử bạn đã chuyển hướng trang1 đến trang2 từ lâu. Bây giờ bạn có thể đã quên rằng trang1 được chuyển hướng và quyết định chuyển hướng trang2 đến trang1 một lần nữa.

Kết quả là, bạn sẽ kết thúc với một quy tắc như sau:

Quy tắc viết lại ^ trang1 / trang2 [R = 301, NC, L] Quy tắc viết lại ^ trang2 / trang1 [R = 301, NC, L]

Điều này sẽ tạo ra một vòng lặp vô hạn và tạo ra lỗi hiển thị ở trên.

Phần kết luận

Khi bạn bắt đầu chuyển hướng vĩnh viễn, bạn không thể dễ dàng thay đổi lại chuyển hướng đó (từ vĩnh viễn có nghĩa là vĩnh viễn vĩnh viễn) bằng cách xóa chuyển hướng.

Điều này là do khi Google phát hiện thấy một chuyển hướng như vậy, nó sẽ chuyển PageRank đến trang mới và thay đổi URL trong SERPs để sử dụng URL mới.

Trong trường hợp bạn đang di chuyển một trang web lớn với hàng chục nghìn trang từ một tên miền cũ sang một tên miền mới hoặc thậm chí từ HTTP sang HTTPS, trước tiên bạn nên thực hiện chuyển hướng tạm thời 302 và đảm bảo rằng tất cả các quy tắc chuyển hướng hoạt động bình thường và xem Google Dữ liệu phân tích để đảm bảo không có kết quả không mong muốn (tức là một số lỗi cú pháp gây ra nhiều trang 404) thì hãy chuyển chuyển hướng 302 sang chuyển hướng 301 vĩnh viễn.

Trong trường hợp bạn đã nhầm với đích của chuyển hướng vĩnh viễn 301 và muốn chuyển sang URL khác, bạn nên tránh chuyển hướng theo chuỗi và thay đổi tất cả các liên kết sang URL mới.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *