使用htaccess在Codeigniter中自定义URL

时间:2011-05-25 19:03:45

标签: .htaccess codeigniter

我正在开发Codeigniter 2.0.2上的网站。公司/用户可以注册并创建自己的个人资料页面,拥有自己的自定义网址(如http://facebook.com/demouser),拥有自己的反馈系统,展示他们的服务。

这就是说,我已成功以下列格式显示个人资料页面

http://mainwebsite.com/company/profile/samplecompany 这将显示公司samplecompany的主页,其中company是控制器,profile是方法。

现在我几乎没有问题,

  1. 我想可以使用htaccess和默认控制器来创建/获取http://mainwebsite.com/samplecompany。如果有人可以帮助htaccess规则,那将是非常棒的。我已经在使用htacess从CI中删除index.php但是无法正常工作。

  2. 给定用户/公司的其他页面很少,例如反馈,联系我们,服务等。因此,我想到的实现链接的形式是 ` http://mainwebsite.com/company/profile/samplecompany/feedbackhttp://mainwebsite.com/samplecompany/feedback

  3. http://mainwebsite.com/company/profile/samplecompany/serviceshttp://mainwebsite.com/samplecompany/services

    http://mainwebsite.com/company/profile/samplecompany/contactushttp://mainwebsite.com/samplecompany/contactus

    where samplecompany`是动态部分 是否可以以格式创建网站链接?

    1. 我理解使用给定域名的A记录,我可以将域名称http://www.samplecompany.com指向http://mainwebsite.com/company/profile/samplecompany,因此输入http://www.samplecompany.com他应该被带到http://mainwebsite.com/company/profile/samplecompany。如果成功实施,将会 http://www.samplecompany.com/feedback http://www.samplecompany.com/services http://www.samplecompany.com/contactus
    2. 工作正常吗?

2 个答案:

答案 0 :(得分:4)

  

我想可以使用htaccess和默认控制器来创建/获取http://mainwebsite.com/samplecompany。如果有人可以帮助htaccess规则,那将是非常棒的。我已经在使用htacess从CI中删除index.php但是无法正常工作。   给定用户/公司的其他页面很少,例如反馈,联系我们,服务等。因此我想到的实现链接形式为“http://mainwebsite.com/company/profile/samplecompany/feedbackhttp://mainwebsite.com/samplecompany/feedback

您可以使用routes完成此操作。例如,在您的/config/routes.php文件中,输入:

$route['samplecompany'] = "company/profile/samplecompany";
$route['samplecompany/(:any)'] = "company/profiles/samplecompany/$1";

第一条规则告诉CodeIgniter,当某人访问http://mainwebsite.com/samplecompany时,它应该处理它,就像URL是“company / profile / samplecompany”一样。第二个规则捕获“samplecompany”之后的URI字符串中的任何内容,并将其追加到最后。

但是,如果您有多家公司(不仅仅是samplecompany),您可能希望扩展CI的路由器以支持此功能,除非您希望每次添加新公司时手动编辑配置文件。

好的,你肯定会想要处理动态公司名称(根据你的评论)。这有点棘手。我不能给你完整的代码,但我可以指出你正确的方向。

您需要扩展CI的路由器,并在传入请求中查询数据库以获取公司名称列表。如果URI细分与公司名称匹配,则您需要使用company/profile方法进行投放。如果没有,您将忽略它并让CI正常处理它。有关详细信息,请查看有关此主题的帖子:forum link

答案 1 :(得分:1)

以下是有关如何实现所需目标的精彩指南:Codeigniter Vanity URL's