2015-02-02 5 views
0

내 링크에 app.php 또는 app_dev.php을 사용할 수 있도록 nginx 서버를 구성하려고합니다. 지금 그들없이, 단지와 :sf2 라우팅을 사용하는 Nginx 구성

www.foobar.com/controller/method/param1/param2

그것은 기본값으로 app.php로드합니다. 내가 접두사로 app.php 추가 할 때 같은 일이 발생,하지만 난 그렇게 app_dev.php 추가 할 때 :

www.foobar.com/app_dev.php/controller/method/param1/param2

나는 경로를 찾을 수 없다는 오류가 발생합니다. 그래서 컨트롤러처럼 app_dev.php를 처리합니다. 왜 이렇게이다? 어떻게 변경할 수 있습니까?

구성 파일은 다음과 같습니다

location /foobar/ { 
    index app_dev.php app.php 
    if (!-e $request_filename) 
    { 
     rewrite ^/(.*)$ /foobar/(app|app_dev).php?$1 last; 
    } 
    try_files $uri $uri/ app.php app_dev.php; 
} 
+0

dev에 대한 변경 사항이 뚜렷한 환경에 채워지지 않았 음을 반영 할 수 있습니다. app.php는 캐시 된 콘텐츠로 실행됩니다. – MadsBjaerge

답변

1

간단하게 아래에이 설정을 사용합니다. 이것은 app_dev.php와 함께 작동하지 않고 작동합니다.

location/{ 
     # try to serve file directly, fallback to app.php 
     try_files $uri /app.php$is_args$args; 
    } 
    # DEV 
    # This rule should only be placed on your development environment 
    # In production, don't include this and don't deploy app_dev.php or config.php 
    location ~ ^/(app_dev|config)\.php(/|$) { 
     fastcgi_pass unix:/var/run/php5-fpm.sock; 
     fastcgi_split_path_info ^(.+\.php)(/.*)$; 
     include fastcgi_params; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     fastcgi_param HTTPS off; 
    } 
    # PROD 
    location ~ ^/app\.php(/|$) { 
     fastcgi_pass unix:/var/run/php5-fpm.sock; 
     fastcgi_split_path_info ^(.+\.php)(/.*)$; 
     include fastcgi_params; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     fastcgi_param HTTPS off; 
     # Prevents URIs that include the front controller. This will 404: 
     # http://domain.tld/app.php/some-path 
     # Remove the internal directive to allow URIs like this 
     internal; 
    } 

는 PHP-FPM 설정에 따라 fastcgi_pass도 fastcgi_pass 127.0.0.1:9000이 될 수 있습니다.