2010-06-27 3 views
4

/category/item/category/index.php?id=item으로 재 작성되는 기본 mod_rewrite 클린 URL 트릭을 수행하려고합니다. /category 디렉토리에서, 나는 htaccess로 파일이 있습니다재기록은 기본 정규식 파일로 리디렉션됩니다

Options +FollowSymLinks 
RewriteEngine on 
RewriteBase /category/ 
RewriteRule ^(.+)$ index.php?id=$1 [L] 

는 그것은 index.php 스크립트에 요청 단지 벌금을 보내지 만, 대신 id 변수에서 "항목을"발견, 나는 "인덱스를 받고 있어요 .php ". 즉, /category/item/category/index.php?id=index.php으로 다시 쓰여지고있는 것 같습니다.

나는 RewriteBase가 다르거 나 다른 변경 사항을 사용하여 끝없는 변형을 시도했지만 아무 것도 작동하지 않습니다. 내가 잘못한 어떤 생각?

+0

"id 변수에서"라고 말하면'$ _GET [ "id"]'를 의미합니까? –

+0

예, 정확하게. $ _GET의 print_r은'Array ([id] => index.php)'를 표시합니다. – DaveG

답변

3

문제는 index.php 파일이 htaccess와 같은 디렉토리에 있고 재 작성에 포함되어 처리된다는 점입니다. 다시 쓰기 조건을 추가해보십시오.

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

또한 입력 매개 변수에 전달할 입력 값은 매우 안전하지 않습니다. 숫자 ID를 사용한다고 가정하면 숫자 만 전달되도록 . 대신 [0-9]을 사용할 수 있습니다. 영숫자 인 경우 [a-zA-Z0-9\-_]과 같은 것을 사용하고 싶을 것입니다.

+0

빙고! 고마워요 ... – DaveG

+0

당신을 진심으로 환영합니다. =) –