CodeIgniter Forums
wrong controller in my first CI 3 - Printable Version

+- CodeIgniter Forums (https://forum.codeigniter.com)
+-- Forum: Using CodeIgniter (https://forum.codeigniter.com/forumdisplay.php?fid=5)
+--- Forum: General Help (https://forum.codeigniter.com/forumdisplay.php?fid=24)
+--- Thread: wrong controller in my first CI 3 (/showthread.php?tid=63017)



wrong controller in my first CI 3 - SangPetualang - 09-16-2015

i just download CI and i take 2 folder application and system to my webfolder,
i move index.php to be inside application and i have modified the .htaccess

my webfolder is C:\onedrive\dropbox\template\
and my access url is http://localhost/template/application/index.php

but every time i open http://localhost/template/application/ always said :
404 Page Not Found, The page you requested was not found.

when i debugging to CodeIgniter.php
PHP Code:
var_dumpt($RTR->class); 
got
Code:
'template'

that why my url always wrong, why this is happened?

i just modify 'Router.php' in method '_set_request' in the first line to exclude my url for segmentation :
PHP Code:
        // akhyar : exclude url before index.php first
        
$excSegment explode('/',config_item('base_url'));
        
$segments array_diff($segments,array('index.php'));
        foreach (
$excSegment as $idxSegment => $valSegment) {
            
$segments array_values(array_diff($segments,array(urlencode($valSegment))));
        } 

become :
PHP Code:
    protected function _set_request($segments = array())
    {
        
// akhyar : exclude url before index.php first
        
$excSegment explode('/',config_item('base_url'));
        
$segments array_diff($segments,array('index.php'));
        foreach (
$excSegment as $idxSegment => $valSegment) {
            
$segments array_values(array_diff($segments,array(urlencode($valSegment))));
        }

        
$segments $this->_validate_request($segments);

        
// If we don't have any segments left - try the default controller;
        // WARNING: Directories get shifted out of the segments array!
        
if (empty($segments))
        {
            
$this->_set_default_controller();
            return;
        }

        if (
$this->translate_uri_dashes === TRUE)
        {
            
$segments[0] = str_replace('-''_'$segments[0]);
            if (isset(
$segments[1]))
            {
                
$segments[1] = str_replace('-''_'$segments[1]);
            }
        }

        
$this->set_class($segments[0]);
        if (isset(
$segments[1]))
        {
            
$this->set_method($segments[1]);
        }
        else
        {
            
$segments[1] = 'index';
        }

        
array_unshift($segmentsNULL);
        unset(
$segments[0]);
        
$this->uri->rsegments $segments;
    } 



RE: wrong controller in my first CI 3 - mwhitney - 09-17-2015

First, you shouldn't be modifying anything in the system directory. Even if you needed to fundamentally alter the way CodeIgniter works for some reason, you could still do so 99.99% of the time without modifying a single file in the system directory.

Second, your issue is a configuration issue, either in your /application/config/config.php file, your .htaccess file, or whatever file you're using to configure your web server (such as a .conf file for Apache).

Third, why did you put your index.php file inside your /application directory? Your /application and /system directories should not be accessible from a web browser, and every request has to be routed through index.php, so it should not be in a directory that should not be accessible from a web browser. I usually put my index.php, all of my CSS/JavaScript/image files, and any documents which need to be available for download in a /public directory, then make that my site's root directory in my Apache .conf file (with /application, /system, etc. outside of that).