page php apache .htaccess nginx front-controller

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:

http://pastebin.com/tyKtM1iB

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; } }