3

如果我有一个名为articles 的控制器,它有一个名为view_articles 的方法,用户可以输入http://example.com/articles/view_articles/some-post并让它返回一个页面。

我已将路线指定为http://example.com/article/post-name。我怎样才能使它只有在路由中指定的 URL 是可见的?有没有办法让文章/view_articles/some-post 显示 404 而不是显示与路由 URL 相同的页面?

我正试图防止出于 SEO 目的的重复。

4

3 回答 3

3

您始终可以通过在routes.php文件中正确定义路由来将默认路由设置为 404 页面:

$routes['article/(:any)'] = 'articles/view_articles/$1';

$routes['(:any)'] = 'main/e404';

正如 CodeIgniter 用户指南所述:

路由将按照它们定义的顺序运行。较高的路线总是优先于较低的路线。

因此,您基本上可以在文件开头定义所有您想看到的内容,并在最后一行阻止其他所有内容。

至于您的主要(可以是任何其他)控制器的 404 方法 -

function e404() {
    show_404();
}
于 2012-09-27T17:20:40.787 回答
2

如果URI 包含第二段,则用作URI 类$this->uri->segment(n)的一部分,以将流量重定向到您的路由。view_articlesview_articles

于 2012-09-27T17:48:36.620 回答
0

我已经以其他棘手的方式做到了,首先你应该在 sys/core/Controller.php 的 __construct 函数中添加一些代码,你可以通过这段代码检查请求的 url 是否在路由中

if(!isset($this->router->routes[uri_string()])){
    show_404(); // Or whatever you want ...
}
于 2013-07-25T23:33:43.343 回答