【发布时间】:2012-12-13 07:06:58
【问题描述】:
如何在 CodeIgniter(目前为 1.7.1)中推送这样的 URI:
example.com/seg1/seg2/seg3/seg4/
或
example.com/seg1/seg2/
等等。通过名称未出现在 URI 中的控制器中的单个类方法?在常规的 PHP 场景中,我会使用 mod_rewrite 类似这样的东西:
RewriteRule ^([^/]+)/$ myfile.php?one=$1 [L]
RewriteRule ^([^/]+)/([^/]+)/$ myfile.php?one=$1&two=$2 [L]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/$ myfile.php?one=$1&two=$2&three=$3 [L]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/$ myfile.php?one=$1&two=$2&three=$3&four=$4 [L]
(我在 PHP 中广泛地清理和验证这些段,如果无效则返回 404)
但在 Codeigniter 中,如果不至少对第一段进行硬编码,我无法弄清楚如何做到这一点,但是使用自定义路由后,它仍然希望将后续段视为方法调用。
我是 CI 的新手,但到目前为止,我已经成功地移植了整个现有站点,但其中的这一部分除外。我不明白所有部分是如何解决这个问题的,所以欢迎提出任何建议。
澄清:在开始我的项目之前,我通读了有关 URI 库、路由等的文档,它们对各种事情都有帮助,但其中任何一个都没有解决这个特定问题。我没有看到 URI 的所有段基本上可以通过一个未在 URI 中命名的控制器进行汇集,并且所有段都是任意的。路由示例假设您知道第一段的值。我已经知道如何删除“index.php”以及访问段。
【问题讨论】: