Làm cách nào để sửa lỗi 404 trong Laravel?

Ngoại lệ PHP tương tự như ngoại lệ trong các ngôn ngữ lập trình khác. Các ngoại lệ được đưa ra khi xảy ra lỗi hoặc sự kiện không xác định. Tất cả các ngoại lệ PHP đều mở rộng lớp Ngoại lệ cơ sở

Laravel cung cấp ứng dụng/Ngoại lệ/Trình xử lý. php kiểm tra tất cả các ngoại lệ được đưa vào ứng dụng. Về cơ bản, mọi ngoại lệ được đưa vào ứng dụng đều có thể được định cấu hình trong tệp này và có thể tạo phản hồi thích hợp

Trong hướng dẫn này, chúng ta sẽ xem cách tạo phản hồi tùy chỉnh cho trang 404. Chúng tôi đang sử dụng Laravel 5. 6. Theo mặc định, Laravel trả lại trang Whoops. Chúng tôi sẽ xem cách trả lại một trang tùy chỉnh tùy thuộc vào ngoại lệ. Điều này sẽ giúp bạn trả về một trang tùy chỉnh cho mọi Ngoại lệ HTTP mà bạn muốn

Khi ai đó truy cập vào một tuyến đường không có mặt, trang web của bạn sẽ hiển thị lỗi. Nó cũng ảnh hưởng đến SEO của bạn

Vì vậy, hãy xem cách chúng ta có thể quản lý trang 404, các ngoại lệ HTTP khác và Ngoại lệ tùy chỉnh trong Laravel

Mục lục

Thiết lập dự án Laravel

Hãy tạo một dự án laravel mới. Chạy lệnh sau để tạo một dự án mới trong thư mục có tên là lỗi

composer create-project --prefer-dist laravel/laravel errors

Xử lý ngoại lệ

Tất cả các thay đổi liên quan đến xử lý ngoại lệ sẽ được thực hiện trong app/Exceptions/Handler. php. Chúng tôi sẽ trả lại chế độ xem khi có lỗi

Trang 404 tùy chỉnh

Hãy tạo một trang 404 tùy chỉnh trong Laravel. Trong ứng dụng/Ngoại lệ/Trình xử lý. php, hãy sửa đổi phương thức kết xuất

/**
 * Render an exception into an HTTP response.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  \Exception  $exception
 * @return \Illuminate\Http\Response
 */
public function render[$request, Exception $exception]
{
    if [$this->isHttpException[$exception]] {
        if [$exception->getStatusCode[] == 404] {
            return response[]->view['errors.' . '404', [], 404];
        }
    }

    return parent::render[$request, $exception];
}

Trong phương thức kết xuất, chúng tôi kiểm tra xem ngoại lệ có phải là ngoại lệ HTTP không. Điều này rất quan trọng vì chúng ta đang gọi phương thức getStatusCode[] chỉ khả dụng trên các ngoại lệ HTTP. Nếu mã trạng thái là 404, chúng tôi sẽ trả về lỗi xem. 404 với cả mã trạng thái. Bạn có thể thay đổi tên của chế độ xem nếu bạn muốn

Chúng ta phải tạo chế độ xem cho trang 404. Vì vậy, hãy tạo một tệp xem lỗi/404 mới. lưỡi. php



    Page not found - 404




The page your looking for is not available


Nếu bạn muốn tạo một trang tùy chỉnh cho bất kỳ ngoại lệ HTTP nào khác, chỉ cần thêm câu lệnh if mới và thay đổi 404 bằng mã trạng thái mới. Đây là phương pháp kết xuất để xử lý các trang tùy chỉnh mã trạng thái 404 và 500

public function render[$request, Exception $exception]
{
    if [$this->isHttpException[$exception]] {
        if [$exception->getStatusCode[] == 404] {
            return response[]->view['errors.' . '404', [], 404];
        }
        
        if [$exception->getStatusCode[] == 500] {
            return response[]->view['errors.' . '500', [], 500];
        }
    }

    return parent::render[$request, $exception];
}

Đây là phản hồi 404 từ ứng dụng của chúng tôi

Trang ngoại lệ HTTP tùy chỉnh

Chúng tôi cũng có thể tự động hóa quá trình này. Sẽ thật tuyệt nếu chúng ta chỉ phải tạo một tệp xem mới cho ngoại lệ. Nhu cầu thêm mã vào ứng dụng/Ngoại lệ/Trình xử lý. php cho mọi ngoại lệ HTTP sẽ không còn cần thiết nữa. Trong ứng dụng/Ngoại lệ/Trình xử lý. php sửa đổi phương thức kết xuất

public function render[$request, Exception $exception]
{
    if [$this->isHttpException[$exception]] {
        if [view[]->exists['errors.' . $exception->getStatusCode[]]] {
            return response[]->view['errors.' . $exception->getStatusCode[], [], $exception->getStatusCode[]];
        }
    }

    return parent::render[$request, $exception];
}

Bây giờ, bạn chỉ cần tạo chế độ xem với mã trạng thái của ngoại lệ. phương thức kết xuất sẽ kiểm tra xem chế độ xem có tồn tại với mã trạng thái của ngoại lệ không. Nếu có chế độ xem, nó sẽ chỉ trả về phản hồi HTTP với chế độ xem đó và mã trạng thái

Ví dụ: chúng tôi có thể tạo lỗi/404. lưỡi. php cho các trang lỗi 404, lỗi/500. lưỡi. php cho 500 trang lỗi, v.v.

Xử lý ngoại lệ tùy chỉnh

Trước tiên hãy tạo một ngoại lệ tùy chỉnh. Chạy đoạn mã sau để tạo một ngoại lệ có tên là TestingHttpException

php artisan make:exception TestingHttpException

Trong ứng dụng/Ngoại lệ/Trình xử lý. php, hãy sửa đổi phương thức kết xuất

public function render[$request, Exception $exception]
{
    if [$exception instanceof TestingHttpException] {
        return response[]->view['errors.testing'];
    }
    return parent::render[$request, $exception];
}

Nếu ngoại lệ là một phiên bản của TestingHttpException, nó sẽ trả về lỗi. chế độ xem thử nghiệm

Bạn cũng có thể sử dụng phương pháp hủy bỏ với mã 404 và nó sẽ cung cấp phản hồi HTTP với trang 404 tùy chỉnh

Làm cách nào để xử lý lỗi 404 trong laravel?

Bạn cần tạo chế độ xem phiến cho các trang lỗi, di chuyển đến đường dẫn này resource/views/ bên trong đây tạo thư mục lỗi và trong thư mục tạo 404. lưỡi kiếm. tệp php . Nó sẽ chuyển hướng bạn đến trang 404 nếu bạn không tìm thấy URL được liên kết.

Làm cách nào để khắc phục lỗi 404 trong Laravel 9?

@Davi thử xóa, định tuyến bộ đệm rồi thử lại . nếu nó không hoạt động, hãy thử bình luận 'cộng đồng. bài đăng' và xóa bộ đệm tuyến đường, để tìm hiểu. cách tiếp cận sau đây trong câu trả lời sẽ khắc phục được sự cố của bạn, nhưng cũng có thể có sự cố về bộ đệm và nếu bạn chưa xóa bộ nhớ cache, bạn nên thực hiện việc này trước khi thử lại.

Lỗi 404 trong laravel là gì?

Lỗi 401 — Trái phép. Lỗi 403-bị cấm. Lỗi 404 — Không tìm thấy . Lỗi 419 — Lỗi POST của Laravel. Lỗi 429 — Quá nhiều yêu cầu.

Làm cách nào để chuyển hướng trang lỗi 404 trong laravel?

trong trường hợp này, bạn có thể chuyển hướng trở lại trang 5 số, thay vì chuyển hướng đến các trang 404. Chúng tôi cũng giải quyết vấn đề này bằng cách sử dụng laravel route any method. Tuyến đường. any['{url}', function[]{ return back[]; }]->where['url', '. *'];

Chủ Đề