删除index.php后,Codeigniter 3无法访问其他页面

时间:2017-11-19 09:19:12

标签: php .htaccess codeigniter codeigniter-3

关注如何从CI3.0网址中删除index.php的另一个SO问题的步骤。一切正常,但其他页面现在抛出404。

之前的网址:domain.com/index.php/about.php 之后:domain.com/about.php< - 投掷404

然而,默认页面仍然有效,但是当我尝试导航到另一个页面时,404 ...

控制器:

<?php
class Pages extends CI_Controller
{

    public function view($page = 'home')
    {

        if ( ! file_exists(APPPATH.'views/pages/'.$page.'.php')) {

            show_404();

        }

        $data['title'] = ucfirst($page);

        $this->load->helper('url');
        $this->load->view('templates/header', $data);
        $this->load->view('pages/'.$page, $data);
        $this->load->view('templates/footer', $data);

    }

}

路由器:

$route['default_controller'] = 'pages/view';
$route['about'] = 'pages/view/about';
$route['(:any)'] = 'pages/view/$1';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

配置:

$config['index_page'] = '';

htaccess的:

<IfModule authz_core_module>
    Require all denied
</IfModule>
<IfModule !authz_core_module>
    Deny from all
</IfModule>

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

2 个答案:

答案 0 :(得分:0)

从使用CodeIgniter 3的第一天开始,我一直在使用以下.htaccess文件删除index.php。我从来没有遇到过URL。我觉得这可以帮到你。

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php/$1 [L] 
</IfModule>

我有许多在线项目没有任何问题,但我对mod_rewrite没有完整的知识。

答案 1 :(得分:0)

如果您使用的是Ubuntu,请编辑文件/etc/apache2/apache2.conf(这里我们有一个/ var / www示例):

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

并将其更改为;

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

然后,

sudo a2enmod rewrite

重新启动apache servser

sudo service apache2 restart

我认为已经完成了。