在这里,我有一个可能已经被听到很多次的问题,但是我仍然找不到一个完美的解决方案。 我的问题是:如何从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/
请让我知道如何隐藏模块名称,控制器名称和方法名称。
答案 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
希望这会有所帮助!