2010-08-16 6 views
0

좋아, "blog/1/Title-of-post"에 "news_item.php? id = 1"을 다시 작성하도록 URL을 설정했습니다.귀여운 URL에서 ID를 가져 오기

제목이 예를 들어 "blog/23/12-days-to-go"와 같이 시작 부분에 숫자가있을 때와는 별개로 올바른 ID를 찾을 수 없습니다.

내가 설정 한 방법은 다음과 같습니다. 누군가가 이해할 수 있습니다.

재 작성 규칙

RewriteRule ^blog/([0-9]+)/([a-z-]+)/$ ./news_item.php?id=$1&t=$2 
RewriteRule blog/([[0-9]+)/([a-z-]+) news_item.php?id=$1&t=$2 

난 그냥

를 사용

링크 내 쿼리로

`WHERE `id`=$id` 

을 사용하여 URL을 다음

$id = intval($_GET['id']); 

에서 ID를 가져옵니다

/blog/$id/$title/ 

제목의 시작 부분에 숫자가있는 경우를 제외하고는 잘 작동하지만 제목 내의 숫자는 괜찮습니다. 누구든지 무엇을 할 것을 제안 할 수 있습니까?

답변

0

첫 번째 예에서 두 번째 RewriteRule에 [이 추가로 있습니다.

당신이 그것을 원하는대로 다음과 같은 RewriteRule의 일을해야 다음 news_item.php에서 다음을 당신에게 제공한다

RewriteRule ^blog/([0-9]+)/([^/]*) ./news_item.php?id=$1&t=$2 

다음 URI /blog/12/24-days-to-go/extra-stuff : 세 번째 후 모든 스트리핑

$_GET['id'] = 12; 
$_GET['t'] = '24-days-to-go'; 

/.

편집

URI에 같은/블로그/12 /를 id로 (12)를 전송하고 당신에게 빈 $_GET['t']

을주고, 잘 작동
3

ids의 문제는 정규 표현식에 있습니다. 너는 숫자를 찾고 있지 않다. -/$ ./news_item.php?id=$1 & t = $ 2

한다 RewriteRule^블로그/([0-9] +)/(+ [A-Za-z0-9]와) 같은 것을 사용

첫 번째 숫자까지만 알파 문자를 가져 오기 때문에 "제목의 숫자"가 작동합니다. (예 : 'abc123def'는 'abc'가됩니다.)

관련 문제