【问题标题】:Codeigniter v.3 custom routesCodeigniter v.3 自定义路由
【发布时间】:2017-04-25 12:06:07
【问题描述】:

我使用 codeigniter v.3,并且在我的大部分页面中都有以下网址:

www.domain.buu/page/index/105

其中Page为Controller Name,index为函数名,105为记录id。

我想要的是www.domain.buu/my_custom_page_name 其中my_custom_page_name 可以是routes.php 中的类似内容

105 = "my_custom_page_name"
106 = "my_other_custom_page_name"
107 = "some_other_page_name"

这可能吗? CodeIgniter 手册对此没有太大帮助。我尝试使用以下代码更改路线:

$route['index/page/:num'] = 'my_custom_page_name';

但是没有用。

【问题讨论】:

标签: php codeigniter routing


【解决方案1】:

你的路线尝试是正确的,但你需要改变论点。

$route 中的数组键是用户将看到的 URI,例如在您的情况下为 my_custom_page_name
值就是你要使用的控制器和方法,比如page/index/105

在你的情况下,路线可能是这样的:

$route['my_custom_page_name'] = 'index/page/105';

【讨论】:

  • 我添加 $route['security'] = 'page/index/105';在我的 routes.php 中,但完全没有变化。网址仍然是相同的 mydomain.buu/page/index/105
  • 路由不会将现有页面重定向到您的新 url,而是添加另一个路由来访问同一页面。尝试转到以下页面:mydomain.buu/security。这应该加载与 page/index/105 相同的页面
  • 如果您想访问 my_custom_page_name 而不是 page/105,则需要在 CI 中使用 .htaccess 或重定向脚本添加重定向规则。
  • 我明白了。但是由于某种原因,当我键入 mydomain.buu/security 时,我得到的页面 - 没有记录。数据库中的数据丢失。
  • 你用了什么路线? [domain]/[route-value] 有效吗?
【解决方案2】:

如果您尝试实现对 seo 友好的 URL,您可以通过在数据库中添加一个名为 slug 的附加列来使用 slug 而不是 105(假设它是唯一 id)

例如,http://www.example.com/page/this-is-my-slug/

在使用 routes.php 时,您需要为所有条目复制路由设置。

$route['my_custom_page_name'] = 'index/page/105';
$route['my_custom_page_name-new'] = 'index/page/106';

【讨论】:

  • 不是真的在 SEO 之后,但如果没有其他工作,我会看看这个答案,记住我现在正在寻求快速而肮脏的解决方案
【解决方案3】:

我不确定你想要达到什么目的,但也许是这样:

$route['my_custom_page_name/(:num)'] = 'page/index/$1';

【讨论】:

  • 我不知道是什么原因,但我没有收到任何错误,但无论我做什么,网址都没有任何变化......奇怪......我现在会检查我的错误日志,也许我会在那里找到一些东西
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多