只允许在Codeigniter中看到路由中指定的URL

时间:2012-09-27 17:12:12

标签: php codeigniter routes

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

我已指定路线为http://example.com/article/post-name。我该怎么做才能只显示路线中指定的URL? article / view_articles / some-post有没有办法显示404而不是显示与路由URL相同的页面?

我正在尝试防止重复用于搜索引擎优化目的。

3 个答案:

答案 0 :(得分:3)

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

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

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

如CodeIgniter用户指南所述:

  

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

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

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

function e404() {
    show_404();
}

答案 1 :(得分:2)

使用$this->uri->segment(n)作为view_articlesURI class的一部分,如果URI包含view_articles作为第二段,则将流量重定向到您的路线。

答案 2 :(得分:0)

我是以其他棘手的方式完成的,首先你应该在sys / core / Controller.php中为__construct函数添加一些代码 您可以通过此代码检查请求的网址是否在路由中

if(!isset($this->router->routes[uri_string()])){
    show_404(); // Or whatever you want ...
}