我的改写有效。
另一方面,我的404错误重定向不再起作用。
如果我添加到我的.php链接,它会返回我没有文件。
同样当我输入我的链接时,管理员/它会给我打开,菜单和copiryght。
示例如果我将https://mon.domain.com/admin/加载到我的页面,而我想要404错误页面。
我想要的是,如果页面不存在,无论如何我遇到了我的错误404
你能帮助我吗?
以下是nginx的配置:
的
的upstream www {
server unix:/var/run/php5-fpm.sock;
}
server {
listen 80 default;
server_name no-impact.eu;
return 301 https://my.domain.com;
}
server {
listen 443 ssl;
server_name my.domain.com;
fastcgi_param HTTPS on;
ssl on;
ssl_certificate /etc/letsencrypt/live/my.domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/my.domain.com/privkey.pem;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
root /var/www/my.domain.com/;
index index.php;
error_page 400 401 402 403 404 500 502 503 504 /error.html;
location /.well-known/acme-challenge {
root /var/www/letsencrypt;
}
location = /error.html {
root /var/www/my.domain.com/error/;
index index.html;
}
location / {
index index.php index.html;
try_files $uri $uri/ @rewrite;
}
location @rewrite {
rewrite ^/([\w-]+)-page-(\d+)$ /index.php?id=$1&page=$2 last;
rewrite ^/([\w-]+)-(\d+)$ /index.php?id=$1&id_tutoriel=$2 last;
rewrite ^/(.*)$ /index.php?id=$1 last;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
的
答案 0 :(得分:-1)
这里的问题是你的重写告诉nginx将所有内容重定向到后端,因此nginx本身不会检测到404。然后你的后端处理请求并发送一个404,nginx直接发送回客户端。
为了让nginx拦截404并显示自己的错误页面,您需要将指令fastcgi_intercept_errors on;
添加到.php
- 位置。