2012-12-22 10 views
8

Ich bin gerade dabei, von Apache zu Nginx zu migrieren.Nginx: Alle nicht existierenden Anfragen an index.php umleiten

Ich verwende derzeit eine benutzerdefinierte Content-Management-Lösung, die SERVER ['request_uri'] verwendet, um Routing zu behandeln.

Was ich versuche zu tun ist Umleiten aller nicht vorhandenen Dateien & Verzeichnisanforderungen an /index.php, und nicht die Clients URI aktualisieren. Wenn eine Datei existiert, möchte ich sie stattdessen zurückgeben.

Ein url Beispiel wäre: localhost/content/page/1 < - Sollte < $ _SERVER [ 'request_uri'] sein/content/page/1 Oder localhost/public/script/exists.js bevölkern - Sollte als eine tatsächliche Datei zurückgegeben werden.

Antwort

9

Sie benötigen einen location / Block oder aktualisieren Sie Ihren aktuellen location / Block in Ihrer nginx vHost Datei hinzuzufügen.

Diese alle Anforderung an die index.php umleiten, wenn die Datei oder das Verzeichnis nicht gefunden wird:

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

Dies geht in Ihrer Server-Richtlinie, für weitere Informationen besuchen Sie bitte http://wiki.nginx.org/HttpCoreModule

Nachdem Sie Ihre vhost-Datei ändern Sie müssen Neustart nginx

Hinweis: Die try_files Richtlinie für Server-bl stocks wurde hinzugefügt in 0.7.44

+0

BTW, wie kann ich den umgeleiteten Dateinamen in PHP bekommen? – starikovs

Verwandte Themen