page - Enrutamiento de solicitudes a través de index.php con nginx
angular routing 404 on refresh (2)
Estoy migrando mi servidor de Apache a Nginx y tengo esta regla simple de .htaccess
:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
La idea detrás de esto es dirigir cada solicitud a un controlador frontal ( index.php
). Estoy tratando de hacer lo mismo con Nginx. Usé un convertidor en línea para hacer que este bloque de ubicación de Nginx:
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /index.php break;
}
}
pero cuando lo agrego a la configuración de mi sitio, Nginx simplemente escupe el código fuente del archivo PHP como descarga. Como referencia, aquí está el archivo de configuración completo:
Sé que PHP funciona, como si eliminase el bloque de ubicación y <?php phpinfo();
un archivo con <?php phpinfo();
funciona correctamente
Cualquier ayuda sería apreciada.
Así es como enruto TODO a index.php, incluidas las solicitudes de subdirectorios, HTTP args, ect.
location / {
try_files $uri $uri/ /index.php?$args; #if doesn''t exist, send it to index.php
}
location ~ /.php$ {
include fastcgi_params;
fastcgi_intercept_errors on;
# By all means use a different server for the fcgi processes if you need to
fastcgi_pass 127.0.0.1:9000;
}
Entonces, por ejemplo, estos se envían a index.php:
http://foo.bar/something/
http://foo.bar/something/?something=1
Si bien estos van directamente a los archivos
http://foo.bar/someotherphp.php
http://foo.bar/assets/someimg.jpg
Saltar final de expresiones regulares:
location / {
index index.html index.php;
if (!-e $request_filename) {
rewrite ^.* /index.php break;
fastcgi_pass 127.0.0.1:9001;
}
}