如何在 CodeIgniter 中设计用户友好的 URI?
Posted
技术标签:
【中文标题】如何在 CodeIgniter 中设计用户友好的 URI?【英文标题】:How to design a User Friendly URI in CodeIgniter? 【发布时间】:2011-08-05 14:59:17 【问题描述】:我是 CodeIgniter 的新手。
我需要设计一个简单的网站,从数据库中提取信息。数据库中的信息是关于广告的。我有关于国家、国家区域、区域位置和广告类型的信息。
我的目标是有一个类似的 URI:
http://www.someurl.com/index.php/country/country_zone/zone_location/ad_type/title_of_ad
有一些关于如何使用 CodeIgniter 执行此操作的信息?
最好的问候,
【问题讨论】:
CI Reactor 支持查询字符串——你最好看看这个,因为这样的 URI 可能很快就会让人困惑,而?country=uk&zone=sw&ad_type=full&title=foo
至少有一些语义意义(也许也来自SEO 视角和用户)
我认为显示当前 URL 的实际外观对您来说是有意义的。大约有一百万种方法可以完成您的要求,这将取决于您正在使用的内容。我也会发布你的控制器。
【参考方案1】:
链接中的前 2 个参数是您的控制器名称和您要调用的该控制器的方法。
所以
http://www.someurl.com/index.php/country/country_zone/zone_location/ad_type/title_of_ad
意味着您调用country
控制器的country_zone
方法并将zone_location、add_type 和title_of_ad 传递给该方法。
你想要什么
http://www.someurl.com/index.php/TheControler/themethod/country/country_zone/zone_location/ad_type/title_of_ad
这样实现:
class TheControler extends Controler
function themethod($country,$country_zone,$zone_location,$ad_type,$title_of_ad)
//your code
【讨论】:
【参考方案2】:我认为最简单的方法是在您的 application/config/routes.php
中使用自定义路由。像这样的:
$route['^(:any)/(:any)/(:any)/(:any)/(:any)'] = "your_controller/get_ads/$1/$2/$3/$4/$5";
那么您的控制器功能将类似于:
function get_ads($country, $country_code, $zone_location, $ad_type, $title_of_ad)
// your code
.. 如果参数有某种模式,您可以用更具体的正则表达式替换 (:any)
。
【讨论】:
以上是关于如何在 CodeIgniter 中设计用户友好的 URI?的主要内容,如果未能解决你的问题,请参考以下文章