SEO网址在CodeIgniter中出现404错误

时间:2011-02-08 10:28:08

标签: php codeigniter codeigniter-url

我对codeigniter很新。我知道php。

如何加载正确的视图?

我的网址:/ blog / this-is-my-title

我告诉控制器类似

如果DB中存在end($ this-> uri-> segment_array()),则将此数据加载到某个视图中。

每次访问/博客/无论

时,我都会收到404错误

我看错了什么?

3 个答案:

答案 0 :(得分:1)

除非您使用路由,否则网址/blog/this-is-my-title将始终为404,因为CI正在寻找名为this-is-my-title的方法,该方法当然不存在。

快速解决方法是将您的帖子显示代码放入其他功能,然后编辑网址以访问帖子:/blog/view/the-post-title

像这样的路线:

$route['blog/(:any)'] = "blog/view/$1";

如果你想让URI保持为`/ blog / this-is-my-title',那么

也可能达到你想要的效果

答案 1 :(得分:1)

可能更多的可能性:

  1. 最常见的 - mod_rewrite未激活
  2. .htaccess未正确配置(如果您没有编辑它,请尝试/blog/index.php/whatever)
  3. 控制器不存在或放在错误的文件夹中

    建议:如果您只需要更改数据,请使用同一控制器中的另一个视图

    if(something) {

    $这 - >负载>查看( '无论');

    }

    否则

    { $这 - >负载>查看( 'somethingelse'); }

    如果没有这些作品发布.htaccess的代码和配置示例,我会看看。

答案 2 :(得分:0)

解决此问题的最佳方法是重新映射控制器。这样,您仍然可以使用相同的控制器来执行其他操作。

无需路由!

enter code here
<?php
class Blog extends Controller {
function __construct()
{
    parent::__construct();
}
public function _remap($method, $params = array())
{
    if (method_exists($this, $method)) 
    {
        $this->$method();
    }
    else 
    {
        $this->show_post();
    }
}
function index()
{
    // show blog front page
    echo 'blog';
}
function edit()
{
    // edit blog entry
}
function category()
{
    // list entries for this category
}
function show_post()
{
    $url_title = $this->uri->segment(2);
    // get the post by the url_title
    if(NO RESULTS)
    {
        show_404();
    }
    else
    {
        // show post
    }
}
  }
 ?>