nginx的尝​​试文件子目录不工作

我有configuration文件,我使用根目录超出public_html,因为我想分开静态文件和PHP。

root /home/user/domain; location / { try_files /static/$uri /static/$uri/ /php/index.php?$args; } location ~ \.php$ { fastcgi_pass hiphop; include /etc/nginx/fastcgi.conf; try_files /static/$uri /static/$uri/ /php/index.php?$args; } 

我错在哪里?

你的方法是有缺陷的。 例如, /static/$uri/会导致外部redirect,这意味着/static/ URI将会显示给您的服务器,您的configuration将尝试parsing为/static/static/ 。 PHP位置中的try_files试图以PHP脚本执行/static/ files。

你有没有考虑使用两个root指令? 也许:

 root /home/user/domain/static; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { root /home/user/domain/php; try_files $uri /index.php?$args; fastcgi_pass hiphop; include /etc/nginx/fastcgi.conf; }