所以我有一个页面:
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页面。
答案 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的调用都会被推送到索引方法......
等等,我能正确理解你的问题吗?如果我错过了这一点,请告诉我,我可以更新。