2

所以我有一个页面:

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 页面。

4

2 回答 2

2

如果不更改 CI 处理 URI 解析的方式,就无法防止这种情况发生。

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

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

这将以页面重定向为代价去除 URI 中给出的任何变量。

于 2012-10-18T21:36:42.847 回答
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 的调用都会被推送到 index 方法......

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

于 2012-10-18T21:40:26.903 回答