我一直试图从我的网址中删除索引,但是当我说索引时我没有运气我的意思是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的解决方案,而不是控制器中的实际方法(保留在网址中)
答案 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]