urign中的codeigniter 3控制器索引(无index.php)

时间:2016-09-07 21:27:49

标签: codeigniter url-rewriting url-routing codeigniter-3

我一直试图从我的网址中删除索引,但是当我说索引时我没有运气我的意思是www.mywebsite.com/en/controller/index而不是www.mywebsite.com/index.php

我正在使用codeigniter 3,我在ubuntu 16.04上所以没有httpd.conf而是mywebsite.com.conf mod重写被激活,我有另一个带有codeigniter 2的项目,它工作得很好。

这是我的.htaccess

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

感谢这个插件,我正在使用多语言网站 http://jeromejaglale.com/doc/php/codeigniter_i18n

在我的路由中我有

$route['default_controller'] = 'App';
$route['404_override'] = 'site_404';

$route['translate_uri_dashes'] = TRUE;    

if ($this->config->item('multilanguage')):          
    $route['^(en|fr)/(.+)$'] = "$2";
    $route['^(en|fr)$'] = "$2";         
endif;

在我的控制器中我有这个

class App extends MX_Controller {

    function __construct()
    {
        parent::__construct();
        header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');
    }

    public function index()
    {
      /*I load my view here*/
    }
}

我打算使用多个控制器和多个方法 我一直在寻找解决方案,但我总是找到关于index.php的解决方案,而不是控制器中的实际方法(保留在网址中)

1 个答案:

答案 0 :(得分:0)

RewriteEngine On之后将此作为第一条规则(也可以在适当的位置设置RewriteBase):

RewriteEngine On
RewriteBase /

# If your default controller is something other than
# "welcome" you should probably change this
RewriteRule ^(welcome(/index)?|index(\.php)?)/?$ / [L,R=301]
RewriteRule ^(.*)/index/?$ $1 [L,R=301]