Codeigniter防止将参数传递给函数以避免不存在的URI段

时间:2012-10-18 21:29:22

标签: php codeigniter function parameters uri

所以我有一个页面:

http://www.mysite.com/controller/function

该功能在控制器中定义为:

function ()
{
//some stuff here
}

但是可以解析URL: http://www.mysite.com/controller/function/blablabla

即。 “blablabla”可以传递给函数并形成一个额外的URI段,但仍会显示相同的页面。我对许多控制器/函数有同样的问题 - 如何防止参数传递给函数(或作为URI段出现)?

我一直在和Codeigniter和PHP一起工作大约6个月,所以请原谅我,如果答案很明显但我的搜索效果不佳。

我的目标是优化SEO - 不确定是否更好地将带有额外URI段的页面重定向到正确的页面或404页面。

2 个答案:

答案 0 :(得分:2)

如果不改变CI处理URI解析的方式,则无法阻止这种情况。

你可以像这样强制重定向:

function my_happy_function($redirect=null) {
   if($redirect) {
   redirect('/controller/my_happy_function/');
   }
}

这将剥离URI中给出的任何变量,但代价是页面重定向。

答案 1 :(得分:0)

听起来你想要一个通用的抓取所有页面。你可以使用路线来做到这一点。

例如:

$route['my_happy_function(/:any)*'] = "my_happy_function";

然后在你的my_happy_function索引方法中检查那里的URI段......

public function index()
{
    $something = $this->uri->segment(1);
    $something_else = $this->uri->segment(2);
    // etc

}

这样所有对my_happy_function的调用都会被推送到索引方法......

等等,我能正确理解你的问题吗?如果我错过了这一点,请告诉我,我可以更新。