nginx 尝试文件子目录不起作用

nginx 尝试文件子目录不起作用

我有一个配置文件,其中我使用 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;
      }

我哪里错了?

答案1

你的方法有缺陷。例如, 会/static/$uri/导致外部重定向,这意味着/static/URI 将呈现到你的服务器,你的配置将尝试将其解析为/static/static/。PHPtry_files位置中的 正在尝试将/static/文件作为 PHP 脚本执行。

您是否考虑过使用两个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;
}

相关内容