2012-10-26 2 views
1

이미지 용 폴더가있는 웹 사이트가 있습니다. 내가 그 디렉토리에있는 모든 스크립트 실행 비활성화 할.htaccess를 사용하여 실행을 위해 두 개의 파일을 허용 목록에 추가하십시오.

  1. 라는 폴더 내 이미지에 두 개의 PHP 파일이 있습니다
  2. :

    나는이 문제가 (즉, 어떤 PHP/펄/파이썬 아무것도.) gradient.php와 rgba.php - 저는 평상시처럼 실행해야 할 것을합니다.

.htaccess 파일을 어떻게 설정합니까? 또한 이미지 디렉토리에 .htaccess을 새로 추가하는 대신 사이트 루트에 이러한 지시문을 통합 할 수 있습니까?

답변

3

당신은 당신의 사이트 루트에 htaccess로 파일에 다음 규칙을 추가 할 수 있습니다

# check if the request is for the images folder 
RewriteCond %{REQUEST_URI} ^/images/ 

# check that it isn't a request for an image 
RewriteCond %{REQUEST_URI} !\.(jpe?g|png|gif|bmp)$ [NC] 

# check that it isn't a request for the 2 ok php files 
RewriteCond %{REQUEST_URI} !^/images/(gradient|rgba)\.php$ 

# forbid access 
RewriteRule^- [L,F] 

이해야 그것 때문에 JPG/JPEG/PNG/GIF/BMP로 끝나지 않는 /images/에 대한 요청 (또는 정규 표현식에 추가하려는 다른 확장자) 또는 gradient.php 또는 rgba.php이 아니기 때문에 403이 금지됩니다.


편집 :

가 난 그냥 그들을 실행하지 싶어, 그들이 금지되고 싶지 않아 - 그것은 업로드 폴더, 그래서 기본적으로 그것을 원하는 사람은 JPG를 업로드하는 것이 경우에 그 내가 발견하지 않은 PHP 코드는 다음을 물려받지 않습니다 JPG 등 이미지 (AddType image/jpeg .jpg을 통해) 올바른 마임/유형에 매핑되는대로 한

를 실행하지 않습니다, 비밀입니다 PHP 처리기와 거기에있는 코드가 실행되지 않습니다. 기본 핸들러를 사용하여 모든 파일을 제공하려면 이미지 디렉토리의 htaccess 파일에 AddHandler default-handler php을 설정해야합니다. 그런 다음 그라디언트 및 rgba 파일을 다른 디렉토리로 이동해야합니다. 선택적으로 htaccess 파일에서 핸들러를 설정할 수는 없지만 <Location> 블록을 사용하여 가상 호스트 구성에서 핸들러를 설정할 수 있습니다.


편집 2 :

내가 잘못했다, 당신은 규칙을 사용하여 사용자 정의 핸들러를 설정 H 플래그를 사용할 수 있습니다. 따라서 위의 규칙에서 [L,F] 대신 [L,H=default-handler]을 사용하면 이미지가 아니거나 gradient.php 또는 rgba.php이 기본 처리기로 전송됩니다 (예 : PHP 파일은있는 그대로 보내지고 처리되지 않으며 mod_php에 의해 실행 됨).

그래서 당신은 다만 할 수 있습니다

RewriteEngine On 
RewriteCond %{REQUEST_URI} !^/images/(gradient|rgba)\.php$ 
RewriteRule^- [L,H=default-handler] 
+0

내가, 내가 그냥이 실행되지하려는 그들에게 금지되고 싶지 않아 - 그것은 업로드 폴더, 그래서 기본적으로 내가 원하는 사람이 JPG를 업로드하면 그 즉, 몰래 발견 된 PHP 코드입니다. 실행되지 않습니다. –

+0

@RichBradshaw 덧글이 너무 깁니다. 내 편집을 참조하십시오. –

+0

감사합니다. –

관련 문제