我在 Nginx 上配置了我的 WordPress 网站,几乎所有东西都按预期运行。我按预期获得了每个不存在页面的 WordPress 404——除了不存在的 .php 页面!这些页面返回 nginx 默认 404 页面未找到。这是为什么?我想获得 WordPress 404。
谢谢!这是配置文件:
set $skip_cache 0;
if ($request_method = POST) {
set $skip_cache 1;
}
if ($query_string != "") {
set $skip_cache 1;
}
if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") {
set $skip_cache 1;
}
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
set $skip_cache 1;
}
location ~ /purge(/.*) {
fastcgi_cache_purge MYWP "$scheme$request_method$host$1";
}
location @php {
try_files $uri =404;
add_header X-Cache $upstream_cache_status;
include /etc/nginx/fastcgi_params;
####
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_script_name;
fastcgi_cache latigreelacrobata.lanavediteseo.eu;
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
fastcgi_cache_valid 200 60m;
fastcgi_intercept_errors on;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 16k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_read_timeout 240;
}
location / {
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$args;
}
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
location ~* ^.+\.(css|js|ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
access_log off; log_not_found off; expires max;
}
答案1
您的配置中有以下几行:
location @php {
try_files $uri =404;
它的意思是,如果找不到 php 文件,nginx 将抛出自己的 404 页面。
如果您希望 Wordpress 在这些情况下也处理 404,请将其替换为:
location @php {
try_files $uri $uri/ /index.php?$args;
这会将请求定向到 Wordpress,并显示您想要的 404 页面。
答案2
我不能说你写的东西肯定是错误的,但我可以说你的 PHP 部分与我的 PHP 部分完全不同。下面是我做这件事的核心。
location ~ \.php$ {
fastcgi_keep_conn on;
fastcgi_pass php56-fpm;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
我有一个关于 Nginx/Wordpress 的教程,其中包含您可以下载的完整配置文件,这里。它用于缓存和各种事情。