【问题标题】:How to rewrite url by removing controller name in codeigniter如何通过在codeigniter中删除控制器名称来重写url
【发布时间】:2013-09-18 21:03:26
【问题描述】:

我的网址如下:

samplesite.com/aboutus [aboutus 是控制者]

samplesite.com/contactus [contactus 是控制者]

我还有注册会员,显示为

samplesite.com/memberaccount/32 [memberaccount 是控制器,32 是 memberid]

我还重写了上面的网址,让会员显示为

samplesite.com/memberaccount/john [john 是 memberid 32 的会员]

我想要实现的是:

http://www.samplesite.com/john(这会导致问题,因为它与 aboutus、contactus 等的控制器名称冲突。让我告诉你我有 40 到 50 个这样的控制器。请任何人建议我如何得到这个。

【问题讨论】:

  • 您需要发布您的 routes.php。您可能会发现使用 codeigniters 路由来实现这一点很棘手,因为您需要创建一个 catch all 路由来将任何内容重定向到您的成员控制器。这需要放置在您的 routes.php 的底部。最好重写 URL 以删除 .htaccess 中的 memberaccount 段

标签: .htaccess codeigniter url-rewriting routes url-routing


【解决方案1】:

对于这件事,你已经使用了 ci 中的路线 这是给定的

$route['aboutus'] = "any controller is map to that name";

samplesite.com/aboutus [aboutus 是控制者]
samplesite.com/contactus [contactus 是控制者]

$route['memberaccount/(:num)'] = "any controller is map to that name/$1";

samplesite.com/memberaccount/32

如果仍然没有得到尝试上面的链接 http://ellislab.com/codeigniter/user-guide/general/routing.html

【讨论】:

  • $route['(:any)'] = "memberaccount/$1";这对我有用.. 所以当我去 samplesite.com/john 时,它会映射到 samplesite.com/memberaccount/john.. 但是当我尝试去我的 aboutus 页面时它会出现问题。即,samplesite.com/aboutus .. 它把 aboutus 视为网站上的成员之一。并尝试将其映射到samplesite.com/memberaccount/aboutus,这正是我想要避免的。现在有没有办法让路由忽略控制器文件。另一种解决方法是将所有控制器列为 $route['aboutus'] = "aboutus";等等。我有 60 个控制器文件
猜你喜欢
  • 2011-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-10
  • 1970-01-01
  • 2016-03-25
  • 1970-01-01
  • 2016-11-02
相关资源
最近更新 更多