2011-04-29 5 views
0

멍청한 질문 일 수도 있습니다. 다만 아파치로 놀기 시작하고 아직 정확한 답변을 찾지 못했습니다.비 아파타 재 작성 URL을 사용하여 사용자가 파일에 액세스하지 못하도록하십시오.

[mywebsite.com/app/controllers/product.php?id=x] 대신 [mywebsite.com/product/x]와 같은 멋진 URL을 표시하기 위해 url-rewriting을 사용하여 웹 응용 프로그램을 설정하고 있습니다. .

그러나 url [mywebsite.com/app/controllers/product.php?id=x]을 입력하여 필요한 페이지에 계속 액세스 할 수 있습니다. 나는 그것을 불가능하게 만들고 싶습니다. 실수 한 경우 사람들을 오류 페이지로 리디렉션하고 "재 작성된"구문으로 만이 페이지에 액세스 할 수있게합니다.

가장 쉬운 방법은 무엇입니까? 앱을 확보하는 것이 필요한 조치라고 생각하십니까?

+0

질문 제목을 업데이트해야합니다. 오해의 소지가 있습니다. – alex

+0

왜 더 안전할까요? 왜 사용자가 '못생긴'방법을 사용하지 못하게하려고합니까? –

+0

'/app/controllers/product.php? id = x'가 여전히 가능한지 확실하지 않은 이유는 무엇입니까? – Gumbo

답변

0
RewriteCond %{REDIRECT_URL} ! ^/app/controllers/product.php$ 
RewriteRule ^app/controllers/product.php$ /product/x [R,L] 

RewriteRule ^product/(.*)$ /app/controllers/product.php?id=$1 [L] 

첫 번째 규칙은 깨끗한 URL없이 REDIRECT_URL 변수 세트 /app/controllers/product.php에 대한 요청을 리디렉션합니다. 다시 쓰기 (마지막 규칙)는 실제 페이지를 호출 할 때이 변수를 설정하며 리디렉션되지 않습니다.

2

PHP 파일에서 $_SERVER['REQUEST_URI']을 검사하여 원하는 방식으로 액세스하고 있는지 확인하십시오.

보안상의 문제가있는 이유는 없습니다.

+0

+1 주로 때문에 마지막 문장. – Gumbo

+0

괜찮아, 고마워! – gwendall

관련 문제