2008-08-16 8 views
5

일부 워드 프레스 설치 에서처럼 ID가없는 URL을 자주 (재기록하여) 볼 수 있습니다. 이것을 달성하는 가장 좋은 방법은 무엇입니까? 예 : site.com/product/some-product-name/ 모든 페이지 요청에서 DB 쿼리를 피하기 위해 캐쉬에 페이지 이름과 ID의 배열을 유지 하시겠습니까? 충돌을 피하는 방법과 ID가없는 URL을 사용하는 데있어 다른 문제는 무엇입니까?ID가없는 URL

답변

3

ID를 사용하면 동일한 수수께끼를 나타냅니다. 실제로는 데이터베이스에서 다른 값을 확인하는 것입니다. 위 URL의 '일부 제품 이름'부분도 고유 한 항목입니다. 어떤 사람들은 그들을 슬러그 (wordpress, 또한 permalinks)라고 부릅니다. 따라서 데이터베이스에 특정 ID가있는 행을 쿼리하는 대신 데이터베이스에 특정 슬러그가있는 행을 쿼리합니다. 레코드를 검색하기 위해 ID를 알 필요가 없습니다.

1

제품 이름이 고유 한 경우 문제가되어서는 안됩니다. 열이 색인되는 한 숫자 ID보다 고유 한 이름으로 제품을 검색하는 데 더 이상 (중요한 것은 아님) 더 이상 소요되지 않습니다.

+0

글쎄, 상당히 오래 걸리지 만 신경 쓰지 않을만큼 빠릅니다. –

1

Wordpress에는 슬러그 용 wp_posts 테이블의 필드가 있습니다. 게시물을 만들면 게시물 제목에서 슬러그가 생성되고 (예 : 설정 한 경우) 공백을 대시로 바꿉니다 (또는 밑줄로 설정할 수 있다고 생각합니다). 또한 아포스트로피, 쉼표 또는 기타 등을 사용합니다. 나는 또한 슬러그의 전체 길이를 제한한다고 믿는다.

간단히 말해 URL을 동적으로 게시물의 제목으로 디코딩하지 않습니다. 테이블에 직접 게시물 이름의 URL 버전과 일치하는 입력란이 있습니다.

1

URL은 Apache의 mod_rewrite 모듈로 다시 쓰여지고 있습니다. 여기서 언급했듯이, Wordpress는 백그라운드에서 제목이나 게시물 이름을 살균 한 후 슬러그를 할당합니다.

질문에 대답하기 위해 Wordpress의 "Pretty Permalinks"기능에 대해 설명하고 Wordpress codex에 대해 자세히 알아볼 수 있습니다. 새 버전의 Wordpress는 내부적으로 다시 쓰기 작업을 수행합니다 (no .htaccess editin, 대신 wp_rewrite). 그래서 어떤 퍼머 링크 구조에 대해서도 동일한 규칙 집합을 볼 수 있습니다.

일부 파기를 수행하면 이전 다시 쓰기 규칙을 찾을 수 있습니다. 예를 들어 :

RewriteRule ^([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/?$ /index.php?year=$1&monthnum=$2&day=$3 [QSA,L] 

/2008/01/01/ 같은 URL을하고 /index.php?year=2008&monthnum=01&day=01에 직접 (그리고 날짜 범주를로드).

그러나 언급 한 바와 같이 product-name 페이지는 에만입니다. Wordpress에서 이미 게시물 제목을 삭제하고 데이터베이스의 필드로 저장했기 때문입니다.

관련 문제