2011-03-10 7 views
0

나는 이것을 수행하는 방법을 알아 내려고하고있다.mysql에 예쁜 URL을 저장하고 PHP로 호출하는 방법

mysite/1/page-title 

1은 페이지 ID 내가 전체 URL은 다음과 같이 것 때문에 그것을 제거하려면 : 현재 내 URL은 다음과 같이

mysite/page-title 

나에게 좋은 자습서를 찾을 수 없습니다 mysql에서 "page-title"을 저장하는 법을 설명하고 가장 중요한 PHP에서 호출하는 법을 설명하십시오.

+0

난 당신이 정확하게 원하는 것을 확실하지 않다 도움이되기를 바랍니다? –

+0

지금까지 무엇을 얻었습니까? 지금이 URL을 생성하는 CMS는 무엇입니까? – fabrik

+0

URL에 이미 페이지 제목이있는 경우 ID를 제거하는 것이 실제로 도움이되는지 확신 할 수 없습니다. StackOverflow URL을 살펴보면 매우 잘 평가됩니다. ID를 제거하기위한 미학 이외의 좋은 이유가 있습니까? – DanSingerman

답변

0

이것은 어떻게 수행 할 것입니다. 제가

function convert_title($title){ 
    $title = preg_replace ("~[^a-zA-Z0-9]~", " ", $title); 
    $title = preg_replace ("~\s+~", "-", $title); 
    $title = substr($title, 0, 225); 
    $i = 0; 
    do{ 
     $exists = title_duplicate_check ($title); 
     $i++; 
    }while ($exists); 

    if ($i > 1) $title .= "_" . $i; 

    return $title; 
} 

function title_duplicate_check ($title){ 
    //check if the title exists or not 
} 

및 페이지가 요청되면 그때 페치 것 같은 함수를 사용 PAGE_TITLE 형식으로 문서의 제목을 변환 varchar(250) unique으로 page_title 불리는 다른 행을 추가하고있는 것 MySQL은

url의 제목과 post_title을 사용하여 제목을 확인하십시오. 현재는 id을 사용하고 있습니다. post_title은 고유하므로 이제는이 문제를 해결하는 데 아무런 문제가 없습니다.

어쩌면 당신은`$ _SERVER [ 'PATH_INFO']`원이

+0

그래서 내 코드 의이 부분을 교체해야합니까?/ * 아래 쿼리에서 사용할 페이지 ID를 결정하십시오 */ if (! $ _ GET [ 'p']) { \t $ pageid = '1'; else { \t $ pageid = $ _GET [ 'p']; } 그리고 그렇다면 어떻게해야합니까? –

1

일반적으로 작동하는 방식은 재 작성 규칙을 사용하는 것입니다 (사용하는 서버에 따라 다르지만 일반적으로 Apache와 nginx는 비슷한 것을 구현합니다). 누군가가 어떤 페이지/위해 요청하는 경우

기본적으로, 아파치가 내부적으로 내가 이것을 언급하고있어

이유를 /your_script.php?some_field_in_db=some-page 그것을 다시 작성하는 것은 당신이를 사용하고 있는지 확인한다는 것입니다 더 많은 설명에 들어가기 전에 똑같은 말을해라. :)

좋아, 이제 다른 비트 - 페이지 URL에서 ID를 숨기려고한다. 즉, "page-title"을 데이터베이스의 키로 사용한다는 것을 의미합니다 (URL에서 '1'을 제거 할 때 다시 쓰기 규칙이 작동한다고 가정).

DB 테이블의 page_title 열 (또는 갖고있는 경우 해당 열이 호출 된 경우)에 고유 색인을 추가하고 대신 해당 키를 기반으로 페이지의 내용을 조회해야합니다 ID보다.

URL에서 'page-title'을 구하는 방법이 필요하다면 그 자체로 또 하나의 질문이며 좀 더 자세한 설명이 필요합니다.

관련 문제