2012-06-22 3 views
0

그래, 카테고리별로 제품 목록을 가지고 있지만 모든 제품을 나열하는 프로젝트가 있습니다. 나는 그것에 대한 페이지 매김을 만들었고, 그것은 효과가있다. 카테고리에 대한 페이징 작업을 위해 mod_rewrite를 설정했지만 모든 제품에 대해 설정을 관리 할 수 ​​없습니다. 작동하는 것은 www.domain.com/catalogue/catid/catname/pagenumber이고, 또한 www.domain.com/catalogue/pagenumber를 만들고 싶지만 mod 재 작성은 여기에서 문제가됩니다.mod_rewrite가 비어있는 경우 변수를 무시합니다.

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]*)/?([^/]*)/?([^/]*)/?([^/]*)$ index.php?p=$1&cid=$2&cname=$3&page=$4 [L] 

두 번째 링크를 호출하려고하면 해당 페이지 번호를 cid로 처리합니다. 그래서 mod rewrite를 설정하여 필요한 것을 읽으 려하고,이 경우에 cid와 cname을 무시하고 싶습니다.

답변

3

난 당신이 하나의 대안을 제공하고 싶습니다 ..

대신 훨씬 더 쉬운 방법이있다 .. 여전히 문제의 비트를 갖고있는 것 같다 정규 표현식에를 사용.

모든 항목을 index.php로 리디렉션하는 경우 예외는 없습니다. 그것은 라우팅을 할 수있는 훨씬 더 자연스러운 방법입니다 ..

그런 다음 인덱스 PHP 내에서, 당신은 [ 'REQUEST_URI'] $ _SERVER를 사용하여 현재 URL을 읽을 수 있으며,이 모든 처리를 할 'explode('/', $url); 매우 쉽게된다.

0

mod_rewrite에서 이것을 신뢰할 수있는 방법은 없습니다.

가장 신뢰할 수있는 방법은 PHP에서 이것을 확인하는 것입니다. 에버트로

  • 하나는 대부분의

  • 두 무엇이다, 거기에서 URL을 해당 페이지에 모든 리디렉션 및 해독 언급

    이 양을 감지 :

    는 두 가지 방법이 있습니다 $ _GET vars를 받고 PHP 내에서 페이지가 어떻게 반응해야하는지 판단합니다. 당신은 매우 정직하지 않다 요청도 매우 빠른 정규식에 내가 오히려 당신을 위해 할 수있는 정규식을 얻으려고 노력보다 PHP에이 절을 두드림 추천 할 것입니다 무엇

.

+0

페이지 스타일을 고쳐 쓰지 않고 구식 방식으로 작업하겠습니다. 답변 주셔서 감사합니다. – Kristijan

+0

그래, 가장 좋은 내기, SEO 친화적 인 URL을 위해 나는 에버츠 제안으로가는 것이 좋습니다. 그것은 모든 프레임 워크가 wordpress와 yii 및 codeigniter와 같은 모든 것을 사용하는 것입니다. 그래서 그것은 견고한 방법이며 검증되었습니다. – Sammaye

0

왜 두 가지 규칙을 사용하지 않으시겠습니까? catalogue/catid/pagenumber과 같은 링크가 표시되지 않도록 하시겠습니까?

RewriteRule ^([^/]*)/([^/]*)$ index.php?p=$1&page=$2 [L] 
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)$ index.php?p=$1&cid=$2&cname=$3&page=$4 [L] 
관련 문제