I am new to codeIgniter. I have some links in my index file. I have removed index.php from url so now url look like
http://localhost/app/Loader/demo_page
This if my Loader code:
class Loader extends CI_Controller {
public function __construct(){
parent::__construct();
$this->load->helper('url');
}
public function index()
{
$this->load->view('header');
$this->load->view('center');
$this->load->view('footer');
}
public function demo_page()
{
$this->load->view('demo');
}
}
When I click on this link, I get not found error.
Now what should I do?
I want to remove controller name also from url and want to show pretty url only like domain/app/mydemopage.php. Please help.
You need URL Rewrite module for this to work. How to get this working depends on the web server you use.
For Apache, edit httpd.conf
and uncomment (remove leading #
) the following line then restart the webserver.
LoadModule rewrite_module modules/mod_rewrite.so
Add/edit .htaccess
file in your CodeIgniter root folder and insert this.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
If you get RewriteEngine not allowed here error, make sure the web root folder of CodeIgniter allows FileInfo
override in your webserver config httpd.conf
.
AllowOverride FileInfo
Add below lines in your .htaccess file.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
You can change your route file using below example. In string I am passing controller and function (method) name. And in $route array I am passing pretty name as I like.
#Route file path : CI_project/applications/config/routes.php
$route['default_controller'] = "Dashboard";
$route['contact-us'] = "dashboard/contact_us";
But please keep in mind that if you want to make above code work you have to enable rewrite module and give this code in .htaccess.
.htaccess file code:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /prjectName/
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
# If we don't have mod_rewrite installed, all 404's
# can be sent to index.php, and everything works as normal.
# Submitted by: Pawan Nagar
<IfModule !mod_rewrite.c>
ErrorDocument 404 /index.php
</IfModule>
来源:https://stackoverflow.com/questions/40734909/codeigniter-how-load-new-page-after-removing-index-php