2011-05-01 5 views
4

내 URL이 검색 엔진에 더 매력적이게 만드는 .htaccess 파일을 작성하려고합니다. 기본적으로이 작업을 수행하는 방법을 알고 있지만이 작업을 어떻게 동적으로 수행 할 수 있는지 궁금합니다. 내가 뭘하려는 것은 그 제목이 URL로 DB에서 반환 넣어, 데이터베이스 쿼리를 수행 URL에서 ID를 가지고있다htaccess에서 동적 URL 만들기

view.php?mode=prod&id=1234 

: 같은

내 URL은 일반적으로 보인다. 뭔가 같은 :

/products/This-is-the-product-title 

나는 어떤 사람들은 phpBB를 포럼 URL 및 주제를이 성취 한 것을 알고, 내가 그것을 새로운 제목 문자열 URL과 실제 URL을 대체 어디까지 코드를 추적하려했지만, 불운.

나는 내가 좋아하는 그냥 ID로 URL을 다시 작성할 수 있습니다 알고

RewriteRule ^view\.php?mode=prod&id=([0-9]+) /products/$1/ 

의 URL 표시를 덮어 PHP에서 방법이 있나요?

답변

6

못생긴 URL (예 : /view.php?mode=prod&id=1234)을 예쁜 URL (예 : /products/product-title)로 변환하는 방법을 궁금하게 생각하는 순간이 있습니다. 이 방법을 다른 방법으로 살펴보기 시작하십시오.

/products/product-title을 입력하는 사람이 실제로 원하는 페이지로 이동하여 /view.php?mode=prod&id=1234에 액세스 할 수 있습니다.

RewriteRule ^products/([A-Za-z0-9-])/?$ /view.php?mode=prod&title=$1 

그런 다음 view.php에 id를 찾기 위해 title에 따라 조회를 할

다음과 같이

즉 규칙이 될 수 있습니다. 그런 다음 정상적으로 수행하십시오.

+0

그렇게되면 나는 기존의 사이트 간 링크를 수정해야한다. – chaoskreator

+0

네, 그렇습니다. 나는 이것이 미래의 해결책에 대한 답을 더 많이 만든다고 생각합니다. 이전 링크를 작동하게하려면'id '를 기반으로 조회를 수행하고 제목을 찾은 다음'/ products/look-up-title'으로 리디렉션하십시오. '.htaccess'에 대한 변경 사항이 없습니다. 단지'view.php'입니다. – Matthew

+0

Eeesh. 좋아, 글쎄, 내가 재작 성할 많은 링크가있는 것 같아. – chaoskreator

0

한 가지 방법은 Location : 헤더를 출력하여 선택한 URL로 강제로 리디렉션하는 것입니다.

2

한 가지 방법은 대부분의 MVC 프레임 워크와 같습니다. 모든 페이지를 동일한 index.php 파일로 리디렉션 할 수 있으며 스크립트를 사용하여로드 할 페이지를 결정할 수 있습니다.

htaccess로

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . index.php [L] 
</IfModule> 

과 PHP 파일은 다음과 같은 스크립트가됩니다 : 당신이해야합니다 물론

// get the url 
    $uri = (isset($_SERVER['REQUEST_URI']))?$_SERVER['REQUEST_URI']: false; 
    $query = (isset($_SERVER['QUERY_STRING']))?$_SERVER['QUERY_STRING']: ''; 
    $url = str_replace($query,'',$uri); // you can edit this part to do something with the query 
    $arr = explode('/',$url); 
    array_shift($arr); 

    // get the correct page to display 
    $controller =!empty($arr[0])?$arr[0]:'home'; // $arr[0] could be product/ 
    $action = isset($arr[1]) && !empty($arr[1])?$arr[1]:'index'; // $arr[1] can be product-title 
    } 

응용 프로그램

나는 패션이 코드를 작업을 이게 도움이 되었으면 좋겠다.