Codeigniter - how to remove the index.php from url

2020-03-03 04:56发布

I have following structure of my project

/system
/applications
  /cache
  /core
  /helpers
  /hook
  /language
  /libraries
  /logs
  /third_party
  /admin-panel
     /config
     /controllers
        welcome.php
        dashboard.php
     /errors
     /models
     /views
        welcome.php
        dashboard.php
  /user-panel
     /config
     /controllers
            welcome.php
            dashboard.php
     /errors
     /models
     /views
        welcome.php
        dashboard.php
/admin
  index.php
index.php

My index.php inside my project folder has user-panel as my application folder and index.php in admin folder has admin-panel as my application folder.

I have inserted this line $route['default_controller'] = "welcome"; $route['welcome'] = 'welcome'; in routes.php inside both user-panel and admin-panel

I can access welcome controller of my both user-panel and admin-panel by using http://localhost/myproject and http://localhost/myproject/admin

but i cannot access my dashboard controller by using http://localhost/myproject/dashboard or http://localhost/myproject/admin/dashboard

my dashboard controller is accessible by using http://localhost/myproject/index.php/dashboard or http://localhost/myproject/admin/index.php/dashboard

But i dont want index.php included in my url. I want to remove it. I have also tried by using .htaccess inside my admin folder. I write following line in this

RewriteEngine On
RewriteCond $1 !^(index\.php|(.*)\.swf|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]

but this didn't work for me. It give 404 not found CI error. I have also enabled mod_rewrite by changing AllowOerride None to AllowOverride All in httpd.conf. Please tell me what should i do to remove index.php and where should i place my .htaccess files in my project directory.

4条回答
▲ chillily
2楼-- · 2020-03-03 05:14

Have a look in the config.php file, there is a variable named 'index_page'

try changing

$config['index_page'] = "index.php";

to

$config['index_page'] = "";
查看更多
Emotional °昔
3楼-- · 2020-03-03 05:20

Be sure of the following :

  1. .htaccess needs to be placed in the same directory as the index.php file, usually root of the application.
  2. read the manual about codeigniter and .htaccess
  3. Be sure that apache is running the rewrite module named : rewrite_module you can read more about enabling the module on linux here : Blog post or for wamp here : Wamp icon -> Apache -> Apache Modules -> rewrite_module
查看更多
放荡不羁爱自由
4楼-- · 2020-03-03 05:29

Open config.php from system/application/config directory

and replace

$config['index_page'] = “index.php” by $config['index_page'] = “”

Create a “.htaccess” file in the root of CodeIgniter directory

and add the following lines.

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

In some case the default setting for uri_protocol does not work properly.

To solve this problem just replace

`$config['uri_protocol'] = “AUTO”` 

by

 $config['uri_protocol'] = “REQUEST_URI” 

from system/application/config/config.php

查看更多
再贱就再见
5楼-- · 2020-03-03 05:34

if your root folder for project is not root of domain i.e. your website is subdirectory of a domain http://localhost/myproject then you need an additional line in your .htaccess file that is RewriteBase

RewriteEngine On
RewriteBase /myproject
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

Also make sure, your config.php is configured as

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

And mod_rewrite is enable in apache's config file.

查看更多
登录 后发表回答