Php 在Codeigniter中重定向时出错
我想在我的url中有我的文章标题,用破折号分隔,我用破折号分隔,这是我的代码:Php 在Codeigniter中重定向时出错,php,codeigniter,Php,Codeigniter,我想在我的url中有我的文章标题,用破折号分隔,我用破折号分隔,这是我的代码: public function post($post_id, $slug = ''){ $data['post'] = $this->posts_model->get_post_by_id($post_id); if ($slug) { $get_title = $data['post']->post_slug; redirect('blog/' .
public function post($post_id, $slug = ''){
$data['post'] = $this->posts_model->get_post_by_id($post_id);
if ($slug) {
$get_title = $data['post']->post_slug;
redirect('blog/' . $post_id . '/' . $get_title);
}
$this->load->view('pages/show-post', $data);
}
以下是我的路线:
$route['blog/(:num)'] = 'blog/post/$1';
$route['blog/(:num)/(:any)'] = 'blog/post/$1/$2';
问题:当我加载example.com/blog/1
时一切正常,但当我加载example.com/blog/1/anything
时,我的代码成功地将我从数据库重定向到example.com/blog/1/my slug
但页面加载失败,firefox显示页面没有正确重定向
错误
我怎样才能解决这个问题?我的代码有问题吗
谢谢你的帮助 您可以访问
example.com/blog/1/anything
,并从数据库中重定向到example.com/blog/1/my slug
。现在在CI中,您可以使用相同的函数,然后由于$slug
为true,您将再次从数据库重定向到example.com/blog/1/my slug
。您有一个重定向循环-这就是导致页面未正确重定向错误的原因
您需要一种方法来停止重定向-就我从您的代码中所看到的,请检查
$slug===$get\u title
,如果是,请不要重定向。但真的很难知道该做什么,因为我不知道你想做什么。你访问example.com/blog/1/anything
,并从数据库中重定向到example.com/blog/1/my slug
。现在在CI中,您可以使用相同的函数,然后由于$slug
为true,您将再次从数据库重定向到example.com/blog/1/my slug
。您有一个重定向循环-这就是导致页面未正确重定向错误的原因
您需要一种方法来停止重定向-就我从您的代码中所看到的,请检查
$slug===$get\u title
,如果是,请不要重定向。但是真的很难知道该怎么做,因为我不知道你想做什么。我想你真正想做的是防止url在没有插入的情况下显示,以提高链接质量和SEO目的。为什么不将代码更改为仅在未提供slug时重定向,即:
更改行:
if ($slug) {
到
这样代码就不会被困在重定向循环中(正如Ron Dadon所建议的那样),帖子将始终显示在URL中的slug中
我猜不出像你在问题中那样链接到帖子的任何其他原因
example.com/blog/1/anything
-你为什么要在URL中添加anything
?这可能只是一个slug,对吧?我想你真正想要的是防止url在没有slug的情况下显示,以提高链接质量并用于SEO目的。为什么不将代码更改为仅在未提供slug时重定向,即:
更改行:
if ($slug) {
到
这样代码就不会被困在重定向循环中(正如Ron Dadon所建议的那样),帖子将始终显示在URL中的slug中
我猜不出像你在问题中那样链接到帖子的任何其他原因example.com/blog/1/anything
-你为什么要在URL中添加anything
?这只可能是鼻涕虫,对吧