只有在指定航线允许的URL在笨可见(Only allow URL's specified i

2019-09-23 03:02发布

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

我已指定为路由http://example.com/article/post-name 。 我怎样才能让这个只有在路由指定的URL是可见的? 是否有物品/ view_articles /一些,后一种方式来显示一个404而不是显示为路径URL相同的页面?

我想,以防止重复的搜索引擎优化的目的。

Answer 1:

使用$this->uri->segment(n)的一部分URI类的内部view_articles将流量重定向到您的途径,如果URI包含view_articles ,因为它的第二部分。



Answer 2:

你总是可以通过正确定义在你的路由使默认路由到一个404页routes.php文件:

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

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

如前所述通过CodeIgniter用户指南:

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

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

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

function e404() {
    show_404();
}


Answer 3:

我心中已经完成,在其他取巧的办法,首先你应该添加一些代码来__construct在sys /核心功能/ Controller.php这样可以检查请求的URL是否是在航线或不受此代码

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


文章来源: Only allow URL's specified in routes to be seen in Codeigniter