我正在使用CodeIgniter 3.1.13,并配置了我的htaccess文件来删除“index.php”,但是当我试图访问一个网页时,它不起作用,除非我在URL中放置默认控制器。
转到以下URL可以正常工作...
- https://www.example.com
- https://www.example.com/index.php
- https://www.example.com/welcome
- https://www.example.com/welcome/page/test
但以下URL不起作用...
如何使此URL正常工作?
这是我的htaccess文件...
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
#force https
RewriteCond %{HTTP_HOST} example\.com [NC]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://example.com/$1 [R,L]
</IfModule>
<IfModule !mod_rewrite.c>
# Without mod_rewrite, route 404's to the front controller
ErrorDocument 404 /index.php
</IfModule>
我把我的config.php改成了这个...
$config['base_url'] = 'https://www.example.com/';
$config['index_page'] = '';
这是我的Welcome.php控制器...
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Welcome extends CI_Controller {
function __construct()
{
parent::__construct();
}
function index()
{
$this->load->view('homepage', $data);
}
function page($pageName)
{
$data['content'] = $this->load->view($pageName, '', TRUE);
$this->load->view('template_page', $data);
}
}
1条答案
按热度按时间v8wbuo2f1#
$route['default_controller']
仅指定当请求网站的根目录时执行哪个控制器。即:当没有给定controller/method
子目录/string时。在您的示例中,这将是当请求www.example.com
或www.example.com/index.php
时。当请求的url子目录/string以其方法之一开头时,默认控制器不会执行。
要使
www.example.com/page/test
url正常工作,您需要有一个Page
控制器,其中包含一个test
方法:或者,将以下内容添加到
config/routes.php
中,以使Welcome
控制器的page
方法处理www.example.com/page/*
URL: