2010-08-10 6 views
0

그래서 나는 아파치의 mod_rewrite가 트릭을 어떻게하는지에 관해 읽었지 만 나처럼 초보자들에게는 너무 애매한 것으로 보인다..htaccess를 통해 URL을 숨겨서

에서 .. 내가

심지어는 GET 요청을 제거 site.com/ 또는 site.com/userpage에 site.com/userpage.php 마스크 싶어 말을

을 할 수 있습니다 site.com/userpage.php?query=yessite.com/userpage.php 또는 site.com/userpage에

어떻게 htaccess 또는 다른 방법을 사용하여 그렇게합니까?

들 덕분에

답변

0

첫째, 어떤 재 작성하기 전에 .htaccess에 줄을 넣어 기억

RewriteEngine on 

당신이 URL을 변경하지 않고있는 경우 site.com/something.php을 표시 site.com/something을하려면 다음을 수행

RewriteCond %{REQUEST_URI}.php -f 
RewriteRule .* %{REQUEST_URI}.php 

그러면 입력 한 것과 동일한 URL을 표시하면서 존재하는 경우 [요청한 파일] .php가 표시됩니다. php 파일이 존재하지 않는다면, 그것은 여전히 ​​당신에게 404를 제공 할 것입니다. (그게 -f을위한 것입니다.)

GET 요청을 완전히 숨길 방법이 없습니다. GET 요청을 제거 할 수는 있지만 스크립트에서 사용할 수 없으며 아무런 의미가 없습니다. 그러나 더 멋지게 만들 수 있습니다. 당신이 site.com/userpage.php?item=30의 내용을 표시 site.com/userpage/item/30를 원하는 경우 예를 들어, 같은 것을 할 수 있습니다

RewriteRule ^/userpage/(.*)/(.*)$ userpage.php?$1=$2 
:

RewriteRule ^/userpage/item/(.*)$ userpage.php?item=$1 

당신은 또한이 같은 규칙을 모든 GET 값으로 작동 할 수있다

그걸로 site.com/userpage.php?query=yessite.com/userpage/query/yes으로 액세스 할 수 있습니다. 그것은 당신이 할 수있는 최선의 방법입니다. GET 값은 URL에서 가져온 것이므로 입력을 완전히 숨기려면 대신 POST를 사용해야합니다.

0

는 GET 요청을 추가하지 않으려면, 왜 POST를 사용하지?

또한 MultiViews를 사용하여 /userpage.php에/userpage로 액세스 할 수 있습니다.

Options Indexes FollowSymLinks Includes MultiViews

MultiViews를이 디렉토리 이름 userpage를 확인합니다, 그것은 아무 것도 발견하지 않는 경우, 다음 파일로 이동합니다 작동하는 방법은, 경우에 단지 헤드 업 당신은뿐만 아니라 디렉토리 이름 userpage했다 .

관련 문제