0

当您只希望第一段有效时,刚刚收到关于 codeigniters 路由的问题。谷歌搜索时似乎找不到一个好的答案。

因此,我的一般页面有一条基本路线:

$route['(:any)'] = 'common/pages/view/$1';

Pages 是类,view 是方法以及作为变量的页面名称(非常像 ci 手册上的示例)。

当我去:

www.mysite.com/mypage/

但是,当我然后去:

www.mysite.com/mypage/randomstring/

这也会加载本质上是重复的 mypage。

他们是否可以告诉任何路线仅适用于第一段,如果存在更多路线,则执行 404?

如果情况变得更糟,我将在方法中添加一个检查以查看第二段是否存在,如果存在则显示_404,但只是好奇它是否可以纯粹在路线中完成。

感谢阅读,我希望这是有道理的。

4

2 回答 2

1

尝试这个:

$route['(:any)/(:any)'] = "none_existent_controller";
$route['(:any)'] = "common/pages/view/$1";
于 2012-07-19T12:23:02.283 回答
1

你可以只使用正则表达式吗?

$route['([^/]+)'] = 'common/pages/view/$1';

这将阻止您的域之后的 URL 包含 /,如果包含 /,它将调用默认的 404 页面。

我没有对此进行测试,但它“应该”工作;)

于 2012-07-19T13:59:55.793 回答