2012-06-19 3 views
0

저는 mod_rewrite로 작업 중이며 페이지 제목을 사용하고 있습니다. 회사 소개 해당 페이지 = 1에 URL이 있으면 공백, + 또는 대시를 바꾸는 것이 좋습니다. URL encode는 +, 대시를 추천합니다.

그래서있어 URL로 좋은 모양 규칙

RewriteRule  ^pages/([A-Za-z0-9\-]+).php?$ index.php?page=$1     [NC,L] # Handle site navigation 

www.domain.com? 대신의 index.php의 콘텐츠 관리 시스템에 입력 한 /pages/About-Us.php 그리고 www.domain.com/index.php?page=About-Us에 요청을 보내십시오.

그러나 url encode는 공백으로 더하기 기호를 넣습니다. 그래서 About Us Us it 내가 쿼리해야하는 것은 domain.com/About+Us.php이므로 분명히 작동하지 않습니다.

About-U를 사용하고 싶습니다. s.php 버전, + 대신 + 대신 공백을 처리하도록 URL을 인코딩합니까?

리치 :

답변

3

urlencode()는 쿼리 매개 변수 만합니다 (? 이후에 일어나는 모든)를위한 것입니다. +은 URL의 쿼리 부분 안에있는 특수 문자이며 리터럴 공간을 나타냅니다. 리터럴 + 문자는 백분율로 인코딩해야합니다. rawurlencode()은 다른 모든 URL 부분을위한 것이며, 공백은 +으로 인코딩되지 않습니다.

대시는 특수 문자가 아니며 URL에 직접 나타납니다.

사용중인 CMS를 지정하지 않았거나 사내 솔루션 인 경우 실제 페이지 제목 대신 URL에 slugs을 사용하고 싶습니다.

대부분의 CMS는 제목을 소문자로 변환하고 공백과 구두점을 대시로 바꾸면 각 페이지마다 자동으로 슬러그를 만듭니다. 이상적으로이 슬러그는 데이터베이스의 실제 필드가되어야하므로 필요할 때 수동으로 다시 정의 할 수 있습니다. 페이지에 대한 링크를 생성 할 때 URL에 슬러그를 포함 시키면 페이지 요청을받을 때 제목이 아니라 슬러그로 데이터베이스에서 찾습니다.

+0

잘 내 CMS이고 사용자는 About Us 및 Special Offers와 같은 페이지 제목을 데이터베이스에 입력했습니다. 그래서 navbar를 쓸 때 preg_replace 나 something을하고 대쉬를위한 공간을 바꾸어야합니까? – Rich

+0

바로 알겠습니다. 말이된다. 감사합니다. @lanzz – Rich

관련 문제