2016-12-31 11 views
0

Ich versuche, meinen einen Controller aus einem anderen Controller zu nennen Umleitung verwenden wie so ..-Controller 404 Ausgabe in codeigniter

Welcome-Controller

public function login(){ 
    $rules=array(
     array(
      'field'=>'username', 
      'label'=>'Username', 
      'rules'=>'required|trim' 
     ), 
     array(
      'field'=>'password', 
      'label'=>'Password', 
      'rules'=>'trim|required' 
     ), 
    ); 
    $this->form_validation->set_rules($rules); 
    if($this->form_validation->run()==TRUE){ 
     $data=array(
      'username'=>$this->security->xss_clean($this->input->post('username')), 
      'password'=>$this->security->xss_clean($this->input->post('password')) 
     ); 
     $account_details=$this->users_model->getCredentials($data); 

     if($account_details->num_rows()==1){ 
      $account_details=$account_details->result(); 
      $this->session->set_userdata(array('username'=>$account_details[0]->username)); 
      redirect(site_url('navigation'),'refresh'); 
     }else{ 
      $this->session->set_flashdata('message','Wrong username or password.'); 
      $this->show_login(); 
     } 
    }else{ 
     $this->session->set_flashdata('error',validation_errors()); 
     $this->show_login(); 
    } 
} 

Navigation Controller

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

Class Navigation extends CI_Controller{ 

    public function __construct(){ 
     parent::__construct(); 
     $this->load->model('Users_access_model'); 
    } 

    public function index(){ 
     $data['links']=$this->Users_access_model->get_links($this->session->userdata['username']); 
     $this->load->view('common/header'); 
     $this->load->view('common/view_navigation'); 
     $this->load->view('common/scripts'); 
    } 
    } 

    ?> 

dies herauskommt in meiner Adressleiste

http://localhost/piercapitan/index.php/navigation 

ein I dieses

404 Page Not Found 

The page you requested was not found. 

bekommen Diese in meiner config

$config['base_url'] = 'http://localhost/piercapitan/'; 

Das ist mein .htaccess

RewriteEngine on 
RewriteCond $1 !^(index\.php|resources|robots\.txt) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php/$1 [L,QSA] 

ich vor die Umleitung verwendet haben, aber ich war mit ihm von meinem Windows-Maschine, aber wenn ich auf Ubuntu übertragen, das ist die Zeit, dass ich dieses Problem bekomme. Vielen Dank.

+0

Versuchen Sie mit http: //localhost/piercapitan/index.php/Navigation. Capital "N" dann sag mir, ob es funktioniert oder nicht? und versuchen Sie dies auch mit http: //localhost/piercapitan/index.php/navigation/index. und http: //localhost/piercapitan/index.php/Navigation/index und versuche über drei Vorkommen und sag mir, ob es immer noch 404 zeigt? – Bhavin

+0

localhost/piercapitan/index.php/Navigation -> das funktionierte für mich .. Wie ändere ich meinen Code, um das zu reflektieren? – Ibanez1408

Antwort

1

Wechsel von

$config['base_url'] = 'http://localhost/piercapitan/'; 

zu

$config['base_url'] = (isset($_SERVER['HTTPS']) ? "https://" : "http://") . $_SERVER['HTTP_HOST'] . preg_replace('@/[email protected]', '', dirname($_SERVER['SCRIPT_NAME'])) . '/'; 

$config['base_path'] = $_SERVER['DOCUMENT_ROOT'] . preg_replace('@/[email protected]', '', dirname($_SERVER['SCRIPT_NAME'])) . '/'; 

Auch von

ändern
redirect(site_url('navigation'),'refresh'); 

zu

redirect('/navigation','refresh'); 

oder

redirect(base_url('navigation'));

Sie automatisch zu laden in der Datei die URL Helfer benötigt 'application/config/autoload.php'

$autoload['helper'] = array('url'); 
0

nur versuchen, dies in

application/config/config.php

$config ['index_page'] = '';