CodeIgniter URI路由-如何删除index.php

时间:2018-09-17 12:11:57

标签: php codeigniter

在这里,我有一个可能已经被听到很多次的问题,但是我仍然找不到一个完美的解决方案。 我的问题是:如何从PHP codeigniter中的URL隐藏模块名称,控制器名称和方法名称。 是的,我在Google上搜索了很多,看过很多视频,但是都没有成功。

下面是不同文件的代码行:

<li><a href="<?php echo base_url('index.php/user/UserController/homeIndex');?>">Home</a></li>

在上面的代码中,有一个菜单栏,当我单击Home时,它应该重定向到UserController和用户模块的homeIndex方法。 UserController是控制器名称 homeIndex是UserController中的思想 而用户就是模块。我在这里遵循HMVC结构。

当前,当我单击主页时,它会在下面的网址中创建 http://localhost/KWeds_svn/kweds_hmvc/index.php/user/UserController/homeIndex

下面是我当前正在使用的.htacces文件代码

<IfModule mod_rewrite.c>
  RewriteEngine On
  #RewriteBase /

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^ index.php [QSA,L]
</IfModule>

下面是config.php中定义的base_url

 $root = "http://".$_SERVER['HTTP_HOST'];
 $root .= str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']);
 $config['base_url']    = "$root";
$config['index_page'] = 'index.php';

我对该网址的预期输出仅为 http://localhost/KWeds_svn/kweds_hmvc/

请让我知道如何隐藏模块名称,控制器名称和方法名称。

1 个答案:

答案 0 :(得分:1)

在CodeIgniter中使用URI路由有一个简单的解决方案。

如果打开routes.php文件夹中的config文件,则可以将URI映射到控制器和方法。

在您的情况下,它会像这样工作:

$route['KWeds_svn/kweds_hmvc'] = 'UserController/homeIndex';

此外,您还需要弄清楚如何从URI中删除index.php,为此,请执行以下步骤:

转到config.php并更改

$config['index_page'] = 'index.php';

$config['index_page'] = '';

然后进入文档根文件夹(保存配置文件和应用程序文件夹的位置)并创建一个名为.htaccess的新文件,在该文件中编写以下代码:

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

如果您托管自己的服务器,则可能需要在apache中启用rewrite module。为此,请转到服务器的命令行并键入以下内容:

sudo a2enmod rewrite

希望这会有所帮助!