2011-10-03 2 views
1

루트 외부에서 처리 할 파일을 어떻게 불러 와야합니까? 나는 별칭에 관해 읽고 있었고 couldnt는 그것을 작동 시키게했다. 그래서 ive는 아무런 운이없는 위치에 새로운 루트를 추가하려고 시도했습니다. nginx 루트 외부에서 다시 쓰기를 포함하는 방법

내 config 파일

server { 
    listen 443; 
    server_name domain.com; 

    --- 

    root ../var/www/domain/public_html; 


    # works as being called form within the root 
    location /login { 
    rewrite ^/login /account/login permanent; 
    } 

#need to 

    location /validation/code.png { 

    root /var/www/domain/include; 

    rewrite ^/validation/code.png /captcha/display_captcha.php; 
    } 

} 

답변

3

당신은 PHP 파일에 PNG 파일을 재 작성하는의 cutdown입니다. 그러면 /captcha/display_captcha.php에 대한 하위 요청이 생성됩니다. 귀하의 설정에 PHP에 대한 위치가 있습니까? php 위치가 일반 루트를 사용한다고 가정하면, 하위 요청이이 값에 도달하면 /captcha/display_captcha.php가 발견되지 않고 404 오류가 발생합니다.

가장 좋은 건 PHP 위치를 복사하고 PHP 파일을위한 PHP 위치를 만드는 것입니다.

server { 
    listen 443; 
    server_name domain.com; 
    root /var/www/domain/public_html; 

    ... 

    location = /validation/code.png { 
     rewrite ^/validation/code.png /captcha/display_captcha.php; 
    } 
    location ~ ^/captcha/display_captcha.php { 
     root /var/www/domain/include 
     ... 
     # copy php processing code from normal php location. 
    } 
} 

더 나은 아직, 단지 직접 HTML과 완전히 드롭 '/validation/code.png'에서 '/captcha/display_captcha.php'를 사용합니다.

관련 문제