2012-12-22 8 views
8

Jestem w trakcie migracji do Nginx, z Apache.Nginx: Przekieruj wszystkie nieistniejące żądania do index.php

Aktualnie używam niestandardowego rozwiązania do zarządzania treścią, które wykorzystuje SERWER ['request_uri'] do obsługi routingu.

Co próbuję zrobić, to przekierować wszystkie nieistniejące pliki & żądań katalogu do /index.php, a nie zaktualizować uri klientów. Jednak gdy plik istnieje, chcę go zwrócić.

Przykładem URL byłoby: localhost/content/strona/1 < - należy wypełnić $ _SERVER [ 'REQUEST_URI'] będzie/content/strona/1 Albo localhost/public/script/exists.js < - Powinien zostać zwrócony jako rzeczywisty plik.

Odpowiedz

9

Trzeba dodać location / blok lub zaktualizować swoją aktualną location / blok w nginx vhost plików.

To przekieruje wszystkie żądania do index.php jeśli plik lub katalog nie został znaleziony:

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

To idzie wewnątrz dyrektywy serwera, aby uzyskać więcej informacji na stronie http://wiki.nginx.org/HttpCoreModule

Po zmodyfikowaniu pliku vhost trzeba restart nginx

Uwaga: dyrektywy try_files dla serwera bl dodano 0.7.44

+0

BTW, jak mogę uzyskać przekierowaną nazwę pliku w php? – starikovs