如何从 CodeIgniter 中的 URL 中删除控制器和函数名称
Posted
技术标签:
【中文标题】如何从 CodeIgniter 中的 URL 中删除控制器和函数名称【英文标题】:How to remove Controller and function name from URL in CodeIgniter 【发布时间】:2011-11-28 01:33:37 【问题描述】:我在使用 CI 开发的一个应用程序时遇到了严重问题。 目前我的网址如下所示
http://www.example.com/content/index/mission/
我想从 URL 中删除 /content/index/ 所以,它应该看起来像这样。
http://www.example.com/mission
我也有路由和 .htaccess 方法。但似乎没有任何效果。
这是我的 .htaccess 文件
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond $1 !^(index\.php|images|css/js/style/system/feature_tab/robots\.txt)
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)$ /index.php/$1 [QSA,L]
我也尝试通过在 config/router.php 中定义路由器来路由 CI,但它不起作用:(
【问题讨论】:
确保您已启用mod_rewrite
并在 apache 配置中将 AllowOverride
设置为 All
。 (假设你在routes.php
中正确创建了路由)
【参考方案1】:
对于您的具体示例,您需要创建一个映射路线(在 application/config/routes.php
中)
$route['mission/']
到
"content/index/mission"
换句话说,$route['mission/'] = "content/index/mission";
查看CI documentation regarding URI routing了解更多信息
【讨论】:
现在我从 $route['mission/'] 中删除了斜杠,它会将我带到主页。 @Salman:你有什么相关的东西可以从你的 .htaccess 文件中发布吗?http://www.example.com/content/index/mission/
不会给你 404,对吗?
是的,它不会给我 404 错误。我已经编辑了我的问题,现在它也有我的 .htaccess 文件。感谢您的快速回复:)
如果你删除你的 .htaccess 会发生什么(但是在 $route['mission/']
中保留尾部斜杠)并尝试 http://www.example.com/index.php/mission
?
@SalmanAslam:routes.php
中定义了其他路由规则吗?如果是这样,您可以发布它们吗?【参考方案2】:
您可以进入 application/config/routes.php 并设置您自己的 URL 路由规则。 (即使用与控制器/功能完全不同的东西)。应该有一个名为 $route 的数组,它可以让您分配 url => 控制器/函数的映射。希望这可以帮助。
看看这个指南,它就在你的小巷里:
http://codeigniter.com/user_guide/general/routing.html
【讨论】:
以上是关于如何从 CodeIgniter 中的 URL 中删除控制器和函数名称的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Codeigniter 4 中的 url 中删除 public/index.php/
如何从 CodeIgniter 中的 URL 中删除控制器和函数名称
如何从 Codeigniter 中的 URL 中删除“&per_page=”