요청한 .php 파일을 찾을 수 없는 경우 try_files를 사용하여 지정된 .php 파일로 리디렉션하시겠습니까?

요청한 .php 파일을 찾을 수 없는 경우 try_files를 사용하여 지정된 .php 파일로 리디렉션하시겠습니까?

nginx를 사용하여 필요한 .php 파일을 찾을 수 없는 경우 try_files를 사용하여 /redirect.php로 리디렉션하고 싶습니다. 그렇게 하는 것이 올바른 방법입니까?

location ~ \.php$ {
...
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        try_files $uri /redirect.php =404;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
}

그러나 그것은 작동하지 않는 것 같습니다.

답변1

location \.php$이는 확장으로 끝나는 모든 요청이 .php이 블록에 의해 처리된다는 의미입니다.

당신은 try_files잘못된 위치에 있습니다. 기존 location /블록 아래나 블록에 배치해야 합니다 server.

답변2

이것이 우리가 사용하고 있는 것입니다.슬릭스택오류 처리(및 301 리디렉션 관리)를 위해 존재하지 않는 .php요청을 WordPress로 리디렉션하려면 다음을 수행하세요.

location ~* \.php$ {
    include /etc/nginx/fastcgi.conf;
    try_files $uri $uri/ /index.php?$args; ## send .php requests to WordPress if not found
...
}

해당 언급 주위에 많은 답변이 떠돌고 있지만 여기에서 PHP-FPM 라우팅을 fastcgi_intercept_errors on;사용할 때는 필요하지 않습니다 try_files.

참조:https://github.com/littlebizzy/slickstack/edit/master/modules/nginx/sites/production.txt

관련 정보