2009-08-28 9 views
0

페이지 경로 지정을 사용하여 범주 경로를 만들고 싶습니다. URL의 순서는 다음과 같습니다.Mod-Rewrite 질문

모든 경로 또는 슬래시 (가능한 경우)

/category/entertainment-and-music/ 

/category/entertainment-and-music/music/ 

는 (" 엔터테인먼트와 음악 아래", "음악"카테고리를 나타냅니다)

/category/entertainment-and-music/5/ 

가 (5을 나타내는 후행없이 작동 "ent. 및 음악"에 대한 페이지)

/category/entertainment-and-music/music/5/ 

("ent. 및 음악/음악 ")

나는 ...

그런 일을 시도하지만 난 그런 유연한 뭔가를 할 수있는 방법

RewriteRule ^category/(.*)/? /category.php?slug=$1&page=1 
RewriteRule ^category/(.*)/(.*)/? /category.php?slug=$1&page=$2 

를 작동하지 않는 이유는 무엇입니까?

사전에 감사

답변

2
RewriteRule ^category/([A-Za-z0-9_-]+)([/]?)$ /category.php?slug=$1&page=1 
RewriteRule ^category/([A-Za-z0-9_-]+)/([0-9]+)([/]?)$ /category.php?slug=$1&page=$2 
RewriteRule ^category/([A-Za-z0-9_-]+)/([A-Za-z0-9_-]+)/([0-9]+)([/]?)$ /category.php?slug=$1&subcat=$2&page=$3 

첫 번째 규칙은 범주를 지정하는 경우를 다루어야합니다.

두 번째 규칙은 카테고리가 제공된 페이지를 포함해야합니다.

세 번째 규칙은 카테고리, 하위 카테고리 및 페이지를 포함해야합니다. 하위 카테고리가 채워지기를 바라는 방식에 대해 나는 분명하지 않았습니다. 그래서 저는 슬러그 이후 또 다른 주장으로 썼습니다.

모두 선택적 슬래시를 허용합니다.

1

첫 번째 정규 표현식이 두 번째 정규 표현식과 일치하는 것처럼 보입니다.

/카테고리/slugname/7 /를 일치합니다 * $ 1로 세트 "를 slugname/7"

이런 식으로 뭔가를 시도하는 :.

RewriteRule ^category/([^/]*)/? /category.php?slug=$1&page=1 
RewriteRule ^category/([^/]*)/(.*)/? /category.php?slug=$1&page=$2 

를 적어도하거나 일치 조금을 강화, 다음과 같이 "-"

RewriteRule ^category/([a-zA-Z0-9_-]+)/? /category.php?slug=$1&page=1 
RewriteRule ^category/([a-zA-Z0-9_-]+)/([0-9]+)/? /category.php?slug=$1&page=$2 

"_"와 수, 당신의 슬러그는 적어도 하나 개의 영숫자로 제한하는 것이 그뿐만 아니라, 당신의 페이지 번호는 물론, 숫자 될 것이다.

+0

대단히 감사하지만 유감스럽게도 작동하지 않는다. 그것은 슬러그의 첫 부분 인 "오락과 음악"만 반환한다. 하위 카테고리 또는 페이지 번호가 없습니다 ... –

+0

두 가지 가능성 : 먼저 정규 표현식의 끝에 ('?'뒤에 '$'가 있어야하므로 해당 지점에서 문자열이 끝나야합니다. 그렇지 않으면 첫 번째 정규식은 여전히 ​​모든 것과 일치합니다. 둘째, 그래도 문제가 해결되지 않으면 두 규칙의 순서를 바꾸어보다 구체적인 규칙이 먼저 일치하도록하십시오. –

+0

시도했지만 여전히 작동하지 않습니다 :(하위 카테고리를 가져 오지 못함 ... –