Nginx 404不起作用,重定向到主页

时间:2019-01-28 17:08:56

标签: nginx

如果找不到文件,我正在尝试使404错误页面正常工作。当前,服务器将仅显示主页而不是404页面。该网站的其余部分运行正常。

example.com/error-page/404.html // displays 404 page correctly.

我尝试添加proxy_intercept_errors和fastcgi_intercept_errors指令,但是没有运气。

感谢您的帮助!

配置:

server {

	listen 443 ssl http2 default_server;
	listen [::]:443 ssl http2 default_server;
	 
	include snippets/ssl-example.com.conf;

	ssl on;

	 access_log /var/log/nginx/access.plygrid-LS-com.log;
     error_log /var/log/nginx/error.plygrid-LS-com.log;

	root /usr/share/nginx/sites/example-com;

	server_name example.com;

proxy_intercept_errors on;

index index.html index.htm index.nginx-debian.html index.php;

error_page 404 = /error-page/404.html;
error_page 503 = /error-page/503.html;

location ~ /.well-known {
    	allow all;
}

location / {
		try_files $uri $uri/ =404 @extensionless-php;
}

location ~ \.php$ {
        try_files $uri $uri/ /index.php?$args;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_read_timeout 300;
        fastcgi_intercept_errors on;
}

location @extensionless-php {
    	rewrite ^(.*)$ $1.php last;
}


    gzip on;
    gzip_min_length  1100;
    gzip_buffers  4 32k;
    gzip_types        
	    text/plain
	    text/css
	    text/js
	    text/xml
	    text/javascript
	    application/javascript
	    application/x-javascript
	    application/json
	    application/xml
	    application/rss+xml
	    image/svg+xml;
    gzip_vary on;
}

1 个答案:

答案 0 :(得分:0)

我设法通过以下方式解决了问题:

向我的主要try_files添加索引:

location / {
        try_files $uri $uri/ =404 @extensionless-php;
        index index.html index.htm index.nginx-debian.html index.php;
}

从我的php try_files中删除/index.php并添加= 404:

location ~ \.php$ {
        try_files $uri $uri/  =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_read_timeout 300;
        fastcgi_intercept_errors on;
}

在php扩展卸妆的末尾斜杠上添加重写:

location @extensionless-php {
        rewrite ^/(.*)/$ /$1 permanent;
        rewrite ^(.*)$ $1.php last;
}