2012-11-30 1 views
0

/blog/post.php?id=this-post에/blog/2012/11/30/this-post와 같은 블로그 게시물 URL을 리디렉션하는 .htaccess 파일이 있습니다. 그것도 일치하는 두 번째 규칙을 적용 할 때까지 잘 작동합니다. 이 규칙은/this/is/a/pageid와 같은 경로 형식의 URL을 취하고 /page.php?id=pageid로 리디렉션되도록 설정됩니다. 경로의 길이에 상관없이 경로의 마지막 디렉토리를 ID로 사용합니다. 불행히도이 규칙은 모든 것을 일치시키고 첫 번째 일치 후 리디렉션을 중지하는 방법을 모르겠습니다. 여기 내 .htacess입니다.다시 쓰기 규칙 루프. 규칙 적용을 중지하는 방법

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^blog/([0-9]+)/([0-9]+)/([0-9]+)/([A-Za-z0-9-]+)$ /blog/post.php?id=$4 [L] 
RewriteRule ([^/]+)/?$ /page.php?id=$1 [L] 

도움을 미리 감사드립니다.

+0

을 각각의 재 작성 앞에서 내 문제를 해결하는 것 같았다. 왜 그래야하는지 모르겠습니다. 'RewriteCond % {REQUEST_FILENAME}! -f RewriteCond % {REQUEST_FILENAME}! -d' – renhack

답변

0

당신은 당신이 처음으로 리디렉션 후 선택 쿼리 매개 변수를 추가하고 해당 매개 변수가 존재하는지 확인하기 위해 쿼리 문자열에 대한 간단한 재 작성 조건이 결합 또는 아니,이 시도 할 수 있습니다 다음 rewriteconditions 퍼팅

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^blog/([0-9]+)/([0-9]+)/([0-9]+)/([A-Za-z0-9-]+)$ /blog/post.php?id=$4 [L] 

RewriteCond %{QUERY_STRING} !^(.*&)?r=0(&.*)?$ 
RewriteRule ([^/]+)/?$ /page.php?id=$1&r=0 [L] 
+0

어떤 이유로 작동하지 않았습니다. 디렉토리에/blog가있을 경우 page.php 규칙을 처리하지 않는다고 말하는 방법이 있습니까? – renhack