2011-02-08 6 views
0

저는 codeigniter에서 처음 접하게되었습니다. 나는 PHP를 알아.SEO url이 CodeIgniter에서 404 오류를 표시합니다.

올바른보기를로드하려면 어떻게해야합니까?

내 URL :// 블로그이-입니다 - 내 - 제목 내가

끝 ($ this-> uri-> segment_array())에 존재하는 경우

같은 컨트롤러 뭔가를 말 했어요

그런 다음 DB는이 데이터를 일부보기에로드합니다.

나는/블로그에 액세스 404-오류마다/내가 잘못보고하고 무엇이든

는 무엇입니까?

+0

특정 도움말이 필요한 경우 현재 사용중인 코드를 알려주세요. – jondavidjohn

답변

1

라우팅을 사용하지 않는 한 URL /blog/this-is-my-title은 항상 CI가 this-is-my-title이라는 메서드를 찾고 있기 때문에 항상 404가됩니다. 물론 존재하지 않습니다. /blog/view/the-post-title

같은 경로 :

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

는 무엇을 달성 할 수

빠른 수정 말하자면 게시물에 액세스하는 다른 함수에 게시물 디스플레이 코드를 삽입하고 URL을 편집하는 것입니다 원하는 경우 URI가 '/ blog/this-is-my-title'처럼 유지되기를 원한다면

1

더 많은 가능성이 있습니다 :

  1. 가장 일반적인 - 컨트롤러가 존재하지 않는
  2. 을 (u는이 /blog/index.php/whatever 시도 편집하지 않은 경우) 또는이다 mod_rewrite를은

  3. 의 .htaccess가 제대로 구성되지 않은 활성화되지이다 잘못된 폴더에

    제안을 배치 : 만 변경해야하는 경우 데이터가 동일한 컨트롤러에서 다른 뷰를 사용

    경우 (뭔가) {

    $ this->로드 -> 보기 ('무엇이든');

    } 다른

    { $ this->로드 ->보기 ('SOMETHINGELSE'); }

    코드 샘플 및 .htaccess 구성을 게시 한 것이 없으므로 살펴 보겠습니다.

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 
    } 
} 
    } 
?> 
관련 문제