【问题标题】:codeigniter 3 controller index in url ( no index.php )url 中的 codeigniter 3 控制器索引(无 index.php)
【发布时间】:2017-01-15 16:44:30
【问题描述】:

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

我正在使用 codeigniter 3,我在 ubuntu 16.04 上所以没有 httpd.conf 但 mywebsite.com.conf mod rewrite 已激活,我有另一个使用 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 的解决方案,而不是控制器中的实际方法(保留在 url 中)

【问题讨论】:

  • $route['^(en|fr)$'] = "$2"; 这不会失败吗?
  • 这里也是小写$route['default_controller'] = 'module/app/index';

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


【解决方案1】:

将此作为第一条规则放在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]

【讨论】:

  • 您好 Tpojka,使用您的 htaccess 代码,网址中没有更多索引,但现在我有一个未找到的页面。我猜现在我需要更改路由中的一些内容,我尝试了 $route['default_controller'] = 'App'; $route['default_controller'] = '应用程序/索引'; $route['default_controller'] = 'app';小写大写等......也没有运气
  • 关于服务器,你的网站根目录是/还是/some_project_directory/
  • 它在一个子目录中,我试图更改 RewriteBase 没有成功,所以我放弃了主要网站,并将子目录插入上一级,我根据这里给出的所有建议进行了更改,并且现在可以了。我没有时间全面检查其他路线,但到目前为止一切正常。非常感谢
  • 我想你完成了一半的工作。 RewriteBase /subdir/RewriteRule ^(welcome(/index)?|index(\.php)?)/?$ /subdir/ [L,R=301]。当然,如果是这样,您也必须注意$config['base_url']/subdir/ 结尾。 #SOreadytohelp
  • 感谢您的所有提示,一定是这样:P
猜你喜欢
  • 2015-03-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-06
  • 2015-09-28
  • 2019-02-05
  • 2016-11-23
  • 2021-12-15
  • 2013-12-12
相关资源
最近更新 更多