2010-02-22 32 views
21

Kind sirs, Tôi đang sử dụng Codeigniter để tạo blog. Tôi có thể cần một cách để chuyển hướng lỗi 404 vào trang 404 tùy chỉnh. Giống như trang 404 của Abduzeedo.com. Có thể kiểm soát điều này bằng cách sử dụng tuyến đường không? Hoặc tôi nên sử dụng bộ điều khiển để chuyển hướng nó sang chế độ xem khác? Cảm ơn rất nhiều!Tôi làm cách nào để chuyển hướng Lỗi 404 trong trang 404 tùy chỉnh bằng Codeigniter?

Trả lời

16

có một cách khác mà tôi sử dụng: bằng cách ghi đè lớp lõi của Codeigniter ngoại lệ. Trước tiên, hãy đảm bảo tiền tố của tệp cấu hình (system/application/config/config.php) của bạn là như sau $config['subclass_prefix'] = 'MY_';

Sau đó tạo tệp có tên MY_Exceptions.php trong hệ thống/ứng dụng/thư viện. Sau đó ghi đè hàm function show_404() ở đây như sau.

class MY_Exceptions extends CI_Exceptions{ 
    function MY_Exceptions(){ 
     parent::CI_Exceptions(); 
    } 

    function show_404($page=''){  

     $this->config =& get_config(); 
     $base_url = $this->config['base_url']; 

     $_SESSION['error_message'] = 'Error message'; 
     header("location: ".$base_url.'error.html'); 
     exit; 
    } 
} 

Bây giờ Bộ điều khiển lỗi sẽ là trang lỗi của bạn, trang sẽ được chuyển hướng đến lỗi 404.

0

Đối với một giải pháp đơn giản, đi đến tập tin "error_404.php" của bạn trong "ứng dụng lỗi//" thư mục và đặt mã này vào lúc bắt đầu của tập tin:

header("Location:".base_url()); 

Nó sẽ redirect 404 trang đến trang chủ.

2

Giải pháp đơn giản.

Tạo lỗi tùy chỉnh hoặc trang Không tìm thấy trong chế độ xem.

Tạo bộ điều khiển cho trang lỗi. Trong hàm chỉ mục sẽ tải chế độ xem trang lỗi mà bạn đã tạo ở bước trước đó.

Bây giờ, bạn Tới application/config/routes.php

bạn nên tìm $route['404_override'] = '';

của các '' nghĩa gọi của nó các trang báo lỗi mặc định.

Bây giờ, hãy đặt tên bộ điều khiển của bạn cho trang lỗi.

Nó sẽ hoạt động.

Giả sử Trình điều khiển của tôi cho trang lỗi là 'error'. và xem trang là 'notfound'.

Vì vậy, mã cho Error.php điều khiển sẽ là:

<?php 
class Error extends CI_Controller 
{ 
    function index() 
     { 
      $this->load->view('notfound'); 
     } 

} 

Bây giờ, tôi thay thế $route['404_override'] = '';-$route['404_override'] = 'error'; trong application/config/routes.php.

+0

dude này là gì ............ –

7

Tuỳ chỉnh 404 trang là tạo ra bằng cách sử dụng các sau 3 bước,

Bước 1: Đầu tiên các tuyến đường mở.php trong application/config và thiết lập một tên điều khiển tùy chỉnh,

$route['404_override'] = 'my404'; //my404 is class name. 

Bước 2: Tạo một bộ điều khiển mới và viết đoạn mã sau vào nó. Mã này rất dễ hiểu. Vì vậy, tôi sẽ không giải thích nó ở đây,

<?php 
class my404 extends CI_Controller 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
    } 

    public function index() 
    { 
     $this->output->set_status_header('404'); 
     $data['content'] = 'error_404'; // View name 
     $this->load->view('index',$data);//loading in my template 
    } 
    } 
    ?> 

Bước 3: Tạo một file quan điểm với tên 'error_404.php' với thông điệp tùy chỉnh của bạn.

1

Bạn muốn hiển thị trang 404 tuỳ chỉnh của mình khi không tìm thấy trang trong trang web của bạn, bạn chỉ cần thay thế tệp tùy chỉnh của mình trên tệp lõi nằm ở application/error/error_404.php chỉ cần thay thế tệp của bạn tại đây. phương pháp bằng cách sử dụng routes và bộ điều khiển tùy chỉnh cho bạn tùy chỉnh 404 page. Nhưng cách ngắn nhất và dễ nhất là thay thế tệp lõi bằng tùy chỉnh 404error page tệp

0

Mở routes.php đầu tiên trong thư mục ứng dụng/cấu hình và đặt tên bộ điều khiển tùy chỉnh.

$route['404_override'] = 'custom404'; //custom404 is class name. 

Tạo bộ điều khiển mới và viết mã sau vào đó. Mã này rất dễ hiểu. Vì vậy, tôi sẽ không giải thích nó ở đây.

<?php 
class custom404 extends CI_Controller 
{ 
public function __construct() 
{ 
    parent::__construct(); 
} 

public function index() 
{ 
    $this->output->set_status_header('404'); 
    $data['content'] = 'error_404'; // View name 
    $this->load->view('index',$data);//loading in my template 
} 
} 
?> 

Tạo tệp chế độ xem có tên 'error_404.php' bằng thông điệp tùy chỉnh của bạn. Đó là tất cả những gì bạn cần làm và sẽ có trang 404 tùy chỉnh của bạn ngay bây giờ.

giải pháp
1

Rất rất rất rất đơn giản hơn ...
Chỉ cần chỉnh sửa /application/views/error_404.php với tùy chỉnh của bạn trang 404 :)

2

Bạn không cần phải tạo ra bất kỳ điều khiển hoặc thay đổi mã, chứ không phải là sửa đổi một tập tin xem . Chỉ cần đặt HTML trang 404 của bạn vào tệp application/views/errors/html/error_404.php.

Nếu bạn muốn sử dụng base_url() hoặc bất kỳ chức năng CodeIgniter nào khác, hãy khởi tạo lớp CI_Controller như mã bên dưới.

<?php 
    $ci = new CI_Controller(); 
    $ci =& get_instance(); 
    $ci->load->helper('url'); 
?> 
+0

Điều này thực sự là tốt nhất cho tôi. Tôi không thể làm cho bộ điều khiển 404 hoạt động, nhưng điều này cho phép tôi truy cập vào các kiểu máy và quan điểm của mình và làm những gì tôi cần. Cảm ơn. – dgig

+0

Trong CI 2.2 bạn chỉ có thể chỉnh sửa trang của bạn nhưng đối với 3.0 chúng tôi khởi tạo ci_contoller như bạn đã xác định (y) –

Các vấn đề liên quan