Usando nginx, me gustaría redirigir a /redirect.php con try_files si no se encuentra el archivo .php requerido, ¿es la forma correcta de hacerlo?
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;
}
Sin embargo, no parece funcionar.
Respuesta1
location \.php$
significa que cada solicitud que termine con .php
extensión será procesada por este bloque.
Estás try_files
en el lugar equivocado. Debe colocarlo debajo de un location /
bloque existente o en el server
bloque.
Respuesta2
Esto es lo que estamos usando enSlickStackpara redirigir cualquier solicitud inexistente .php
a WordPress para manejo de errores (y administración de redireccionamiento 301):
location ~* \.php$ {
include /etc/nginx/fastcgi.conf;
try_files $uri $uri/ /index.php?$args; ## send .php requests to WordPress if not found
...
}
Tenga en cuenta que hay muchas respuestas flotando en torno a esa mención, fastcgi_intercept_errors on;
sin embargo, eso no es necesario cuando se usa try_files
para el enrutamiento PHP-FPM aquí.
Árbitro:https://github.com/littlebizzy/slickstack/edit/master/modules/nginx/sites/production.txt