不存在的PHP文件的Nginx位置

时间:2014-06-12 12:15:26

标签: nginx php

我有配置(最小):

server {
  listen test.local:80;
  server_name test.local;

  server_name_in_redirect off;

  location / {
    root /data/www/test/public;
    try_files $uri $uri/ /index.php?route=$uri&$args;
    index     index.html index.php;
  }

  location ~ \.php$ {
    root /data/www/test/public;

    fastcgi_pass  127.0.0.1:9000;
    fastcgi_index index.php;

    fastcgi_param  SCRIPT_FILENAME   /data/www/test/public$fastcgi_script_name;
    fastcgi_param  ...
    ...
  }
}

这是网址/help//contacts/等的工作文件...(所有重定向到带有get变量的index.php)。

但是如果url,例如/help.phpcontacts.php,并且这些文件不存在,我输出:

File not found.

如何更新我的Nginx配置?我需要网址,例如:

/help.php     =>   /index.php?route=/help.php
/contacts.php?foo=bar...     =>   /index.php?route=/contacts.php&args=…

1 个答案:

答案 0 :(得分:0)

这是404错误页面的简单配置。它的自定义404页面。

error_page 404 /404.php;
location /404.php {
root /var/www/public_html;
allow all;
}

最后一部分

重要的一行是========== try_files $ uri = 404;

location ~ .php$ {
                  try_files $uri =404;
                  fastcgi_pass 127.0.0.1:9001;
                  fastcgi_index index.php;
                  fastcgi_param SCRIPT_FILENAME /var/www/public_html$fastcgi_script_name;
                  include fastcgi_params;
                }