【问题标题】:CodeIgniter URI Routing - How to remove index.phpCodeIgniter URI 路由 - 如何删除 index.php
【发布时间】:2018-09-17 12:11:56
【问题描述】:

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

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

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

在上面的代码中有一个 ul li 菜单栏,当我点击 Home 时,它​​应该重定向到 UserController 和用户模块的 homeIndex 方法。 UserController 是控制器名称 homeIndex 是 UserController 中的 mentho 用户是模块。我在这里关注 HMVC 结构。

目前,当我点击主页时,它会在 url 下方创建 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';

我对 url 的预期输出只有 http://localhost/KWeds_svn/kweds_hmvc/

请告诉我如何隐藏模块名称、控制器名称和方法名称。

【问题讨论】:

标签: php codeigniter


【解决方案1】:

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

如果您打开 config 文件夹中的 routes.php 文件,您可以将 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

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2014-08-26
    • 2013-04-13
    • 2020-07-08
    • 2010-11-29
    • 2016-08-30
    • 2014-07-19
    • 2017-08-28
    • 1970-01-01
    相关资源
    最近更新 更多