相关configuration:
location /myapp { root /home/me/myapp/www; try_files $uri $uri/ /myapp/index.php?url=$uri&$args; location ~ \.php { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root/index.php; } }
我绝对在/home/me/myapp/www有一个文件foo.html ,但是当我浏览到/myapp/foo.html它由PHP处理,这是try_files列表中的最后一个回退。
为什么发生这种情况?
如果您浏览到/myapp/foo.html检查/home/me/myapp/www/myapp/foo.html的文件。 当它没有find它时,它将继续到try_files列表中的回退。
如果您需要Nginx检查/home/me/myapp/www/foo.html的文件,那么您需要在您的用例中使用alias而不是root 。 这是解决scheme…
location /myapp { alias /home/me/myapp/www; try_files $uri $uri/ /myapp/index.php?url=$uri&$args; location ~ \.php { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root/index.php; } }
请注意,有一个长期的错误 , alias和try_files不能一起工作。 另外请注意,使用alias可能会破坏configuration的其他部分,例如PHP处理!