Cách tìm các liên kết bị hỏng trên trang web của bạn bằng Wget trên Debian 7
Đã bao nhiêu lần bạn nhấp vào một liên kết HTML trên một trang web mà chỉ gặp lỗi 404 Not Found? Các liên kết bị hỏng tồn tại do các trang web đôi khi bị di chuyển hoặc bị xóa theo thời gian. Công việc của administrator web là tìm ra những liên kết bị hỏng đó trước khi con người hoặc rô bốt công cụ tìm kiếm thực hiện. Sự chậm trễ trong việc khắc phục sự cố dẫn đến trải nghiệm user không tốt và có thể bị phạt xếp hạng trang công cụ tìm kiếm.Nếu trang web chứa nhiều hơn một vài trang, việc kiểm tra thủ công từng liên kết riêng lẻ trở nên quá tốn công sức, nhưng có rất nhiều công cụ tự động hóa tác vụ đó. Bạn có thể sử dụng các ứng dụng dựa trên web, như những ứng dụng do Google Webmaster Tools và World Wide Web Consortium (W3C) cung cấp, nhưng chúng thường thiếu các tính năng nâng cao hơn. Nếu bạn chạy WordPress, bạn có thể sử dụng một plugin, nhưng một số công ty lưu trữ web chia sẻ cấm chúng vì chúng chạy trên cùng một server với trang web và việc kiểm tra liên kết tốn nhiều tài nguyên.
Một tùy chọn khác là sử dụng chương trình dựa trên Linux trên một máy riêng biệt. Chúng bao gồm các trình thu thập thông tin web chung cũng phát hiện ra các liên kết bị hỏng (như wget
) và trình kiểm tra liên kết được xây dựng tùy chỉnh (như linkchecker
và klinkstatus
). Chúng có khả năng tùy biến cao và giảm thiểu mọi tác động tiêu cực đến thời gian phản hồi của trang web mục tiêu của bạn.
Hướng dẫn này giải thích cách sử dụng wget
để tìm tất cả các liên kết bị hỏng trên một trang web để bạn có thể sửa chúng.
Yêu cầu
Để làm theo hướng dẫn này, bạn cần :
Hai Debian 7 Server, một máy chung để chạy
wget
từ ( generic-1 ) và một máy lưu trữ trang web ( web server -1 ).Một user sudo không phải root trên cả generic-1 và webserver-1 . Bấm vào đây để xem hướng dẫn.
webserver-1 cần phải cài đặt LAMP . Bấm vào đây để xem hướng dẫn.
Tùy chọn, web server có thể có domain đã đăng ký của riêng nó. Nếu vậy, hãy sử dụng domain của bạn ở bất cứ đâu bạn thấy
your_server_ip
. Bấm vào đây để xem hướng dẫn.
Mặc dù hướng dẫn này được viết cho Debian 7, các ví dụ về wget
cũng sẽ chạy trên các bản phân phối Linux hiện đại khác. Bạn có thể cần cài đặt wget
trên các bản phân phối khác mà nó không được bao gồm theo mặc định.
Bước 1 - Tạo trang web mẫu
Đầu tiên, ta sẽ thêm một trang web mẫu có nhiều liên kết bị thiếu.
Đăng nhập vào web server -1 . Mở một file mới có tên spiderdemo.html
để chỉnh sửa bằng nano
hoặc editor yêu thích của bạn.
sudo nano /var/www/spiderdemo.html
Dán phần sau vào file . Đây là một trang web rất đơn giản bao gồm hai liên kết bị hỏng, một liên kết nội bộ (thêm IP server của bạn vào vị trí được đánh dấu bên dưới) và một liên kết bên ngoài.
<html> <head> <title>Hello World!</title> </head> <body> <p> <a href="http://your_server_ip/badlink1">Internal missing link</a>. <a href="https://www.digitalocean.com/thisdoesntexist">External missing link</a>. </p> </body> </html>
Lưu và đóng file .
Tiếp theo, thay đổi chủ sở hữu file và group spiderdemo.html
thành user web server mặc định, www-data
.
sudo chown www-data:www-data /var/www/spiderdemo.html
Cuối cùng, thay đổi quyền file của file HTML mới.
sudo chmod 664 /var/www/spiderdemo.html
Đến đây bạn có thể xem trang mẫu tại http:// your_server_ip /spiderdemo.html
.
Bước 2 - Chạy wget
wget
là một trình download trang web có mục đích chung cũng được dùng như một trình thu thập thông tin web. Trong bước này, ta sẽ cấu hình wget
để báo cáo xem mỗi liên kết trỏ đến một trang hiện có hay bị hỏng mà không tải trang xuống.
Lưu ý: Chỉ kiểm tra các liên kết trên trang web mà bạn sở hữu. Việc kiểm tra liên kết trên một trang web phải chịu chi phí máy tính đáng kể, vì vậy những hoạt động này có thể được hiểu là gửi thư rác.
Đăng nhập vào generic-1 và chạy lệnh wget
sau. Dưới đây là giải thích về mỗi lá cờ; bạn có thể sửa đổi lệnh này cho trường hợp sử dụng của bạn .
wget --spider -r -nd -nv -H -l 1 -w 2 -o run1.log http://your_server_ip/spiderdemo.html
Sau đây là các cờ cơ bản bạn cần :
--spider
dừngwget
từ tải trang.-r
làm chowget
theo đệ quy từng liên kết trên trang.-nd
, viết tắt của--no-directories
, ngăn không chowget
tạo một hệ thống phân cấp các folder trên server của bạn (ngay cả khi nó chỉ được cấu hình thành spider).-nv
, viết tắt của--no-verbose
, ngừngwget
từ xuất ra thông tin bổ sung mà là không cần thiết cho việc xác định các liên kết bị phá vỡ.
Sau đây là các thông số tùy chọn mà bạn có thể sử dụng để tùy chỉnh tìm kiếm của bạn :
-H
, viết tắt của--span-hosts
, làm chowget
thu thập thông tin đến các domain phụ và domain khác với domain chính (tức là các trang web bên ngoài).-l 1
là viết tắt của--level
. Theo mặc định,wget
thu thập dữ liệu sâu tới năm cấp so với URL ban đầu, nhưng ở đây ta đặt nó thành một. Bạn có thể cần chơi với thông số này tùy thuộc vào tổ chức trang web .-w 2
, viết tắt của--wait
, hướng dẫnwget
đợi 2 giây giữa các yêu cầu để tránh bắn phá server , giảm thiểu mọi tác động đến hiệu suất.-o run1.log
lưu kết quả củawget
vào một file có tênrun1.log
thay vì hiển thị nó trong terminal của bạn.
Sau khi bạn chạy lệnh wget
ở trên, hãy extract các liên kết bị hỏng từ file kết quả bằng lệnh sau.
grep -B1 'broken link!' run1.log
Tham số -B1
chỉ định rằng, đối với mỗi dòng phù hợp, wget
hiển thị một dòng bổ sung của ngữ cảnh hàng đầu trước dòng phù hợp. Dòng trước này chứa URL của liên kết bị hỏng. Dưới đây là kết quả mẫu từ grep
trên.
http://your_server_ip/badlink1: Remote file does not exist -- broken link!!! https://www.digitalocean.com/thisdoesntexist: Remote file does not exist -- broken link!!!
Bước 3 - Tìm URL liên kết giới thiệu
Bước 2 báo cáo các liên kết bị hỏng nhưng không xác định các trang liên kết giới thiệu, tức là các trang trên trang web có chứa các liên kết đó. Trong bước này, ta sẽ tìm các trang web liên kết giới thiệu.
Một cách thuận tiện để xác định URL liên kết giới thiệu là kiểm tra log truy cập của web server . Đăng nhập vào web server -1 và tìm kiếm liên kết bị hỏng trong log Apache.
sudo grep Wget /var/log/apache2/access.log | grep "HEAD /badlink1"
Đầu tiên grep
trong lệnh trên tìm tất cả các yêu cầu truy cập bởi wget
đến webserver. Mỗi yêu cầu truy cập bao gồm chuỗi Tác nhân user , chuỗi này xác định tác nhân phần mềm chịu trách nhiệm tạo yêu cầu web. Định danh User Agent * cho wget
là Wget/1.13.4 (linux-gnu)
.
grep
thứ hai tìm kiếm URL một phần của liên kết bị hỏng ( /badlink1
). URL một phần được sử dụng là một phần của URL theo sau domain .
Đầu ra mẫu từ chuỗi lệnh grep
như sau:
111.111.111.111 - - [10/Apr/2015:17:26:12 -0800] "HEAD /badlink1 HTTP/1.1" 404 417 "http://your_server_ip/spiderdemo.html" "Wget/1.13.4 (linux-gnu)"
URL liên kết giới thiệu là mục cuối cùng thứ hai trên dòng: http:// your_server_ip /spiderdemo.html
.
Kết luận
Hướng dẫn này giải thích cách sử dụng công cụ wget
để tìm các liên kết bị hỏng trên một trang web và cách tìm các trang liên kết giới thiệu có chứa các liên kết đó. Đến đây bạn có thể sửa chữa bằng cách cập nhật hoặc xóa bất kỳ liên kết bị hỏng nào.
Các tin liên quan