Lỗi 404 là 1 mã trạng thái HTTP (HTTP status code), là lỗi rất hay gặp và gây khó chịu cho người dùng. Bài viết này sẽ cho biết lỗi 404 Not Found là gì và cách khắc phục.
Lỗi 404 Not Found là một mã trạng thái phản hồi HTTP (HTTP response status code). Cho biết không thể tìm thấy tài nguyên được yêu cầu. Giống như hầu hết các mã phản hồi HTTP. Đặc biệt là với các mã chỉ ra lỗi. Nguyên nhân của lỗi 404 có thể khó để theo dõi và giải quyết.
Có hơn 50 mã trạng thái tiềm tàng đại diện cho mối quan hệ phức tạp giữa client, một ứng dụng web, server. Và thường có cả nhiều dịch vụ web của bên thứ ba. Do đó, xác định nguyên nhân của một mã trạng thái cụ thể có thể là một thách thức lớn nhất.
Trong bài viết này, chúng ta sẽ khám phá lỗi HTTP 404 Not Found bằng cách kiểm tra những gì có thể gây ra lỗi này. Đồng thời cung cấp một vài mẹo và thủ thuật để giúp bạn chẩn đoán và gỡ lỗi ứng dụng đang gặp phải những vấn đề như vậy. Chúng tôi cũng sẽ xem xét một số ít các hệ thống quản lý nội dung phổ biến nhất (CMS) đang được sử dụng ngày nay. Cung cấp cho bạn một số hiểu biết về các lĩnh vực có vấn đề tiềm ẩn trong các hệ thống này có thể gây ra lỗi 404 không mong muốn. Vì vậy hãy bắt đầu ngay nào!
Nội dung
Là lỗi phía server hay phía client?
Tất cả các mã trạng thái phản hồi HTTP trong danh mục 4xx được coi là phản hồi lỗi của khách hàng (client error response). Các loại tin nhắn này ngược lại với các lỗi trong danh mục 5XX. Chẳng hạn như lỗi 502 Bad Gateway được coi là server error response. Do đó, sự xuất hiện của một lỗi 4xx không nhất thiết là do phía client. Đây là nơi khách hàng là trình duyệt web hoặc thiết bị được sử dụng để truy cập ứng dụng.
Thông thường khi đang chẩn đoán một vấn đề với ứng dụng của riêng mình, ta có thể ngay lập tức bỏ qua hầu hết các mã và các thành phần phía client. Chẳng hạn như HTML, CSS, JavaScript v.v. Điều này chỉ không áp dụng cho các trang web. Nhiều ứng dụng smartphone có giao diện người dùng hiện đại được cung cấp bởi một ứng dụng Web thông thường. Nhưng nó thường được ẩn khỏi người dùng.
Điều đó nói rằng, lỗi php 404 Not Found chỉ ra rằng tài nguyên đang cố gắng truy cập là không khả dụng. Nên hoàn toàn xuất phát từ ứng dụng khách. Bạn có thể đang cố truy cập URL không hợp lệ, trình duyệt có thể gửi thông tin xác thực không hợp lệ cho ứng dụng, v.v.
Nhưng lưu ý rằng, mặc dù lỗi php 404 Not Found được coi là client error response. Nó không có nghĩa là client hay server không phải nguồn gốc vấn đề. Bởi vì máy chủ vẫn là đối tượng mạng đang tạo ra lỗi. Nó là đối tượng trả về dưới dạng mã phản hồi HTTP cho client. Mặc dù có thể là client đang gây ra sự cố theo cách nào đó.
Bắt đầu bằng việc backup ứng dụng
Như với bất kỳ điều gì, ta nên có kế hoạch an toàn trước khi làm hỏng cái gì đó. Như vậy, điều quan trọng nhất là thực hiện sao lưu đầy đủ ứng dụng và CSDL. Sau đó thử sửa lỗi hoặc thực hiện thay đổi với hệ thống. Thậm chí, hãy tạo một bản sao hoàn chỉnh nếu có khả năng. Máy chủ này nên không hoạt động hoặc không khả dụng cho public. Điều này cung cấp một nền tảng thử nghiệm sạch để kiểm tra các bản sửa lỗi tiềm năng để giải quyết vấn đề. Sao cho vẫn không đe dọa bảo mật các ứng dụng của bạn.
Chẩn đoán một lỗi 404 not found
Như đã đề cập ở trên, lỗi 404 Not Found cho biết rằng client (web browser) đang nhận một tin nhắn từ server (web page/URL). thông báo rằng tài nguyên cụ thể đang không khả dụng. Lỗi như vậy có thể xảy ra trong một số hoàn cảnh:
- Client gửi một request thích hợp đến server. Server đã nhận được thành công request đó. Nhưng server không thể tìm thấy tài nguyên hợp lệ tại vị trí cụ thể đó. Điều này thường do URL không hợp lệ được chỉ định bởi client. Và server không thể nhận dạng URL này được.
- Ngoài ra, một số ứng dụng web “giả” lỗi 404 khi một tài nguyên không hợp lệ được yêu cầu. Trong trường hợp này, server trả về mã phản hồi 200 OK tiêu chuẩn. Phản hồi này thường cho biết rằng tài nguyên đã được tải như mong đợi. Tuy nhiên, server sau đó sẽ hiển thị “404 page”, cho người dùng biết rằng tài nguyên thực ra không được tìm thấy. Tuy nhiên, máy chủ không thực sự trả về mã phản hồi 404. Nên các lỗi giả như vậy thường gọi là soft 404 error. Đây thường được xem như một phương pháp tiêu cực. Vì nhiều phần mềm tự động (như web crawler) dựa vào lỗi 404 để xác định xem tài nguyên/liên kết có hợp lệ không.
Trong cả hai trường hợp, URL được cung cấp có thể hiệu lực trong quá khứ. Nhưng máy chủ đã không cung cấp redirect ở phía server. Nó thường được sử dụng để chuyển hướng request được thực hiện với tài nguyên không hợp lệ hoặc lỗi thời với các mục tiêu mới.
Troubleshoot ở phía client
Lỗi 404 Not Found là một client error response code. Vì vậy tốt nhất là bắt đầu bằng cách khắc phục vấn đề ở phía client. Dưới đây là một số mẹo có thể thử trên trình duyệt hoặc thiết bị gây ra lỗi.
Kiểm tra URL request
Nguyên nhân phổ biến nhất của lỗi 404 đơn giản là do nhập URL không chính xác. Tên miền (ví dụ: vietnix.vn) không phân biệt chữ hoa và chữ thường. Có nghĩa là liên kết vIeTnIx.vn vẫn hoạt động được. Tuy nhiên, các phần đường dẫn, truy vấn hoặc đoạn xuất hiện sau tên miền thì khác. Trừ khi cấu hình ứng dụng/server được thiết kế rõ ràng để xử lý.
Ví dụ, vietnix.vn có thể viết thường, viết hoa hay hỗn hợp. Nhưng vietnix.vn/TAI-LIEU/ lại không khả dụng nếu không được thiết kế cụ thể. Vì vậy gây ra lỗi 404 Not Found.
Vì vậy các lỗi đánh máy nhỏ gây ra lỗi 404 thường là khá phổ biến.
Xóa các cookies liên quan
HTTP Cookies là những phần dữ liệu nhỏ được lưu trên trên thiết bị cục bộ của bạn. Nó được sử dụng bởi các trang web và ứng dụng như một cơ chế để “nhớ” thông tin về trình duyệt và thiết bị cụ thể này. Hầu hết các ứng dụng web hiện đại đều tận dụng Cookie. Với mục đích là để lưu trữ dữ liệu dành riêng cho người dùng hoặc trình duyệt. Xác định khách hàng và cho phép các truy cập trong tương lai nhanh hơn và dễ dàng hơn.
Tuy nhiên, Cookie có thể lưu trữ bất kỳ thông tin nào họ cần. Trong nhiều trường hợp, các ứng dụng web hoặc dịch vụ – chẳng hạn như mạng quảng cáo. Sẽ sử dụng dữ liệu được lấy từ Cookie cục bộ để chuyển hướng hoặc xử lý các yêu cầu đến. Do đó, một Cookie không hợp lệ hoặc bị hỏng có thể khiến máy chủ không nhận ra bạn. Hoặc nghĩ bạn đang cố truy cập một tài nguyên không tồn tại.
Trong hầu hết các trường hợp, bạn chỉ cần quan tâm đến bản thân với các Cookie có liên quan đến trang web hoặc ứng dụng gây ra vấn đề. Cookies được lưu trữ dựa trên tên miền của ứng dụng Web. Do đó bạn chỉ có thể xóa những Cookie trùng với miền trang web (ví dụ: airbrake.io). Do đó giữ nguyên tất cả các Cookie khác. Tuy nhiên, nếu bạn không quen thuộc việc loại bỏ thủ công một số Cookie. Nó sẽ dễ dàng và an toàn hơn nhiều để xóa tất cả các Cookie cùng một lúc.
Xóa Cookie có thể được thực hiện theo nhiều cách khác nhau, tùy thuộc vào trình duyệt bạn đang sử dụng.
Log out và log in
Nếu ứng dụng bạn đang sử dụng có một số dạng xác thực người dùng, bước cuối có thể thử ở phía client là log out rồi log in lại. Nếu gần đây bạn đã xóa Cookie trình duyệt, điều này thường sẽ tự động đăng xuất Lần tới khi bạn tải trang. Vì vậy hãy thử đăng nhập lại tại thời điểm này, để xem mọi thứ có hoạt động bình thường không.
Trong một số tình huống, ứng dụng có thể đang gặp sự cố với phiên trước đó của bạn. Đó chỉ là một chuỗi mà máy chủ sẽ gửi cho client để xác định ứng dụng khách đó trong các request trong tương lai. Cũng như các dữ liệu khác, mã thông báo phiên (hoặc chuỗi phiên) được lưu trữ cục bộ trên thiết bị của bạn trong Cookie. Và nó được client chuyển đến server rong mỗi yêu cầu. Nếu máy chủ không nhận ra mã thông báo phiên được gửi bởi client. Hoặc một cái gì đó đã xảy ra với server chỉ ra rằng mã thông báo cụ thể không hợp lệ. Khi đó, bạn có thể nhận được lỗi 404 Not Found.
Đối với hầu hết các ứng dụng web, log out và log in lại sẽ buộc mã thông báo phiên cục bộ sẽ được tạo lại.
Quay lại các bản nâng cấp trước
Nếu gần đây bạn đã cập nhật chính hệ thống quản lý nội dung ngay trước khi xuất hiện lỗi 404 xuất hiện. Bạn có thể muốn xem xét khôi phục lại phiên bản trước mà bạn đã cài đặt khi mọi thứ đang hoạt động tốt. Tương tự, mọi tiện ích mở rộng hoặc mô-đun mà bạn có thể đã nâng cấp gần đây cũng có thể gây ra các sự cố phía máy chủ. Vì vậy quay lại các phiên bản trước đó cũng có thể giúp ích. Để được hỗ trợ với tác vụ này, chỉ cần Google “downgrade [platform_name]” và thực hiện.
Tuy nhiên, trong một số trường hợp, một số CMS nhất định không thực sự cung cấp khả năng hạ cấp phiên bản. Cho thấy rằng họ coi ứng dụng cơ sở, cùng với mỗi phiên bản mới được phát hành, cực kỳ ổn định và không có lỗi. Đây thường là trường hợp cho các nền tảng phổ biến hơn. Vì vậy đừng sợ nếu bạn không thể tìm thấy một cách dễ dàng để hoàn nguyên nền tảng thành một phiên bản cũ hơn.
Gỡ các tiện ích mở rộng, mô-đun hoặc plugin
Tùy thuộc vào hệ thống quản lý nội dung cụ thể, ứng dụng của bạn đang sử dụng, tên chính xác của các thành phần này sẽ khác nhau. Nhưng chúng phục vụ cùng một mục đích trên mọi hệ thống. Đó là cải thiện khả năng và tính năng của nền tảng bên cạnh những gì có sẵn. Nhưng cần lưu ý: Các tiện ích mở rộng như vậy, ít nhiều, kiểm soát toàn bộ hệ thống. Và chúng thực hiện hầu như mọi thay đổi. Cho dù đó là mã PHP, HTML, CSS, JavaScript hoặc cơ sở dữ liệu. Như vậy, ta có thể gỡ cài đặt bất kỳ phần mở rộng mới nào có thể đã được thêm vào gần đây. Cách thực hiện có thể dễ dàng được tìm thấy ở trên Google.
Kiểm tra các thay đổi không mong muốn của cơ sở dữ liệu
Nhưng ngay cả khi bạn gỡ cài đặt tiện ích mở rộng thông qua bảng điều khiển CMS, điều này không đảm bảo rằng các thay đổi được thực hiện bởi phần mở rộng đã được hoàn nguyên hoàn toàn. Đặc biệt là với các phần mở rộng WordPress, được cung cấp Care Blanche trong ứng dụng. Nó bao gồm các quyền truy cập đầy đủ cho cơ sở dữ liệu. Trừ khi tác giả của tiện ích mã hóa rõ ràng những thứ như vậy.
Có những trường hợp trong đó tiện ích mở rộng có thể sửa đổi các bản ghi cơ sở dữ liệu không “thuộc về” về phần mở rộng. Khi đó, tiện ích mở rộng có thể không biết cách hoàn nguyên các bản ghi dữ liệu. Vì vậy nó sẽ bỏ qua những thứ như vậy trong quá trình gỡ cài đặt. Chẩn đoán các vấn đề như vậy có thể khó khăn. Nhưng cá nhân tôi đã gặp phải những tình huống như vậy nhiều lần. Vì vậy tốt nhất là mở cơ sở dữ liệu và xem thủ công thông qua các bảng. Cũng như các hồ sơ có khả năng được sửa đổi bởi phần mở rộng.
Trên hết, Google là bạn của bạn. Đừng ngại tìm kiếm các điều khoản cụ thể liên quan đến vấn đề của bạn. Chẳng hạn như tên của CMS của ứng dụng, cùng với lỗi 404 Not Found. Rất có thể bạn sẽ tìm thấy ai đó (hoặc, có lẽ, nhiều người) đã trải qua vấn đề này. Và có thể sẽ được cung cấp một giải pháp.
Troubleshoot ở phía server
Dưới đây là một số mẹo bổ sung để giúp bạn khắc phục sự cố có thể gây ra vấn đề trên ở phía server.
Kiểm tra cấu hình web server
Hầu hết các máy chủ web hiện đại cung cấp một hoặc nhiều tệp cấu hình. Cho phép bạn dễ dàng điều chỉnh hành vi của máy chủ. Nó dựa trên một loạt các trường hợp khác nhau. Ví dụ: máy chủ có thể được cấu hình để từ chối các yêu cầu đến một số thư mục hoặc URL nhất định. Việc này có thể dẫn đến lỗi 404 không tìm thấy.
Các tùy chọn cấu hình cho mỗi loại máy chủ web khác nhau có thể thay đổi đáng kể. Vì vậy chúng tôi sẽ liệt kê một vài loại phổ biến cung cấp cho bạn một số tài nguyên để xem qua. Tùy thuộc vào loại máy chủ ứng dụng của bạn đang chạy trên:
Kiểm tra các bản log – nhật ký
Gần như mọi ứng dụng web sẽ giữ một số hình thức nhật ký phía máy chủ. Nhật ký ứng dụng thường là lịch sử các hoạt động của ứng dụng. Chẳng hạn như các trang nào được yêu cầu. Hay các server mà web kết nối, kết quả cơ sở dữ liệu nào nó cung cấp, v.v. Nhật ký máy chủ có liên quan đến phần cứng thực tế đang chạy ứng dụng. Nó cũng thường sẽ cung cấp chi tiết về trạng thái của tất cả các dịch vụ được kết nối. Hoặc thậm chí chỉ là chính máy chủ. Google “log [platform_name]” Nếu bạn đang sử dụng CMS. Hoặc “log [Ngôn ngữ lập trình]” và “log [Hệ điều hành]”.
Xác thực liên kết ứng dụng
Có một số công cụ hữu ích cho phép bạn đánh giá ứng dụng của mình hoặc chỉ các tài nguyên cụ thể. Đối với người mới bắt đầu, bạn có thể muốn xem xét việc đăng ký trang web của mình với Google Search Console. Công cụ này cung cấp cho bạn cái nhìn sâu sắc về những gì Bots Crawler Web của Google đã tìm thấy trong khi đi qua trang web của bạn. Bất kỳ vấn đề nào sẽ được hiển thị ở đây cho tất cả các ứng dụng đã đăng ký. Và có thể là một cách dễ dàng (và tự động) để tìm bất kỳ vấn đề nào không hợp lệ hoặc các vấn đề trang web khác.
Nếu bạn chỉ cần kiểm tra một tài nguyên hoặc URL cụ thể thì còn đơn giản hơn. Công cụ kiểm tra liên kết W3C sẽ ngay lập tức quét liên kết bạn cung cấp. Sau đó hiển thị bất kỳ vấn đề nào ở dưới cùng.
Debug code hoặc script của ứng dụng
Nếu các cách trên vẫn không được, có thể vấn đề nằm ở các custom code trong ứng dụng. Bạn có thể thử chẩn đoán nơi vấn đề xuất phát. Bằng cách debug thủ công ứng dụng. Hoặc phân tích cú pháp thông qua nhật ký server và ứng dụng. Lý tưởng nhất là tạo một bản sao của toàn bộ ứng dụng vào một máy phát triển cục bộ. Sau đó thực hiện quy trình debug từng bước. Điều này sẽ cho phép bạn khởi tạo lại trạng thái ban đầu, không có lỗi PHP 404 Not Found nữa.
Theo airbrake.io.
Tìm hiểu thêm:
>>> NGINX là gì? NGINX có thể làm được gì?
>>> Apache Tomcat là gì? 2 bước đơn giản đề cài đặt Tomcat
>>> Cài SSL trên IIS (Windows 2008 R2)