Cách Xử Lý Lỗi 404 Do Bot Truy Cập Path Không Có Trong Web ASP.NET MVC


Cách Xử Lý Lỗi 404 Do Bot Truy Cập Path Không Có Trong Web ASP.NET MVC

Hệ thống của bạn có thể gặp lỗi lạ như:

Error: The controller for path '/games/granny-divide-practise-shoulder-loose-value/' was not found or does not implement IController.

và stack trace từ ASP.NET MVC cho thấy rằng ứng dụng của bạn đang nhận request đến đường dẫn /games/..., nhưng không có controller nào xử lý path đó. Dưới đây là những lý do phổ biến khiến lỗi này xảy ra, đặc biệt khi bạn "không hề có tính năng games":

1. Bot hoặc crawler spam URL ngẫu nhiên

  • Các SEO bot hoặc scraper tool đôi khi truy cập các URL ngẫu nhiên như:

    /games/granny-divide-practise-shoulder-loose-value/ /admin/login /wp-login.php 
  • Mục đích: dò xem website bạn có lỗ hổng gì không hoặc spam index của search engine.

  • Những URL này không liên quan gì đến nội dung website bạn.

🛠 Cách kiểm tra:

  • Mở log truy cập web server (IIS log hoặc access.log), tìm:

    /games/

    hoặc User-Agent đáng ngờ (bot, crawler, etc.)


🔐 2. Thử tấn công dò đường dẫn (Path Probing hoặc Directory Enumeration)

  • Hacker dùng tool để dò các đường dẫn phổ biến nhằm phát hiện route nhạy cảm như /admin, /games, /api...

  • Những đường dẫn như /games/...tự động sinh ra bởi tool, không liên quan đến logic bạn viết.


🌐 3. Backlink spam hoặc link từ website khác

  • Có thể có ai đó đã tạo backlink hoặc spam link chứa /games/... trỏ về website bạn, làm Google hoặc bot truy cập thử link đó.


🔄 4. Rewrite rule hoặc RouteConfig sai

  • Trong file RouteConfig.cs, nếu bạn có dòng route cấu hình theo kiểu:

    routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } );

    thì bất kỳ URL nào có dạng /something/something đều được gán controller = "games", nhưng vì không có controller "games" nên lỗi xảy ra.


✅ Cách khắc phục:

A. Ignore path không xác định hoặc redirect về trang 404

Thêm vào RouteConfig.cs một rule catch-all cuối cùng:

routes.MapRoute( name: "CatchAll", url: "{*url}", defaults: new { controller = "Error", action = "NotFound" } );

B. Tạo middleware chặn bot

Nếu bạn dùng .NET Core, có thể dùng middleware hoặc filter để chặn truy cập bất thường dựa trên User-Agent hoặc IP.

C. Báo cáo Google nếu link đó từ Google

  • Vào Google Search Console → "Pages" hoặc "Crawl errors" → Disavow hoặc yêu cầu xóa index link /games/... nếu nó từ kết quả tìm kiếm.


Kết luận

Lỗi này thường là do bot hoặc tool bên ngoài truy cập URL không tồn tại, chứ không xuất phát từ web của bạn. Tuy nhiên, bạn nên xử lý khéo để:

  • Trả về 404 hoặc trang báo lỗi thân thiện thay vì để web ném lỗi;

  • Log lại IP và user-agent nếu nghi ngờ bị dò quét;

  • Cấu hình catch-all route để giữ trải nghiệm người dùng tốt hơn.


Tư vấn và hỗ trợ Tư vấn + -
Phát triển phần mềm theo yêu cầu, chi phí thấp, chất lượng cao và đặc biệt chúng tôi luôn đồng hành và phát triển cùng khách hàng trên hành trình chuyển đổi số toàn diện, giúp doanh nghiệp khách hàng bứt phá và thành công. Streamline Your Business with Outsourcing. We provide ongoing support and training to our remote teams to ensure they are equipped with the latest knowledge and skills needed to excel in their roles. We also have a full team of experts who can help you guide and help your outsourced team members who work from home.