2012-12-22 15 views
8

Sono nel bel mezzo della migrazione su Nginx, da Apache.Nginx: reindirizza tutte le richieste inesistenti a index.php

Attualmente sto utilizzando una soluzione di gestione dei contenuti personalizzata che utilizza SERVER ['request_uri'] per gestire il routing.

Quello che sto cercando di fare è redirigere tutti i file non esistenti & richieste di directory a /index.php, e non aggiornare i clienti uri. Tuttavia, quando esiste un file, voglio restituirlo.

Un esempio url sarebbe: localhost/content/page/1 < - necessario popolare $ _SERVER [ 'REQUEST_URI'] per essere/content/page/1 o localhost/public/script/exists.js < - Dovrebbe essere restituito come un file reale.

risposta

9

è necessario aggiungere un blocco location / o aggiornare la location / blocco corrente nella vostra nginx vhost file.

Questo reindirizzerà tutto richiesta al index.php se il file o la directory non si trova:

location/{ 
    try_files $uri $uri/ /index.php; 
} 

questo va dentro la direttiva del server, per maggiori informazioni visita http://wiki.nginx.org/HttpCoreModule

Dopo aver modificato il file vhost è necessario riavviare nginx

Nota: La direttiva try_files per bl del server ocks è stato aggiunto in 0.7.44

+0

BTW, come posso ottenere il nome del file reindirizzato in php? – starikovs

Problemi correlati