Wordpress nginx预览帖子找不到404,但旧帖子正在运行

时间:2013-06-24 18:58:48

标签: wordpress nginx varnish permalinks

我最近将wordpress网站从一个主机移动到另一个主机。以前我使用 Apache 来运行wordpress,但后来使用 nginx 配置了本教程How to Install Wordpress with nginx on Ubuntu 12.04

一切正常,但是当我尝试从管理面板预览新帖子时,它显示未找到错误。但所有已发布的帖子都运行良好。

当我点击预览帖时,它会显示我的网址 http://mydomain.com/?p=2671&preview=true但页面为404.

页面标题找不到任何内容?p = 2671& preview = true

我的nginx配置是:

server {
    listen    127.0.0.1:8080;
    #listen   80; ## listen for ipv4; this line is default and implied
    #listen   [::]:80 default ipv6only=on; ## listen for ipv6

    root /usr/share/nginx/www/mysite/public;
    index index.php index.html index.htm;

    server_name mydomain.com;   

    location / {
        try_files $uri $uri/ /index.php?q=$uri&$args;
    }

    location /doc/ {
        alias /usr/share/doc/;
        autoindex on;
        allow 127.0.0.1;
        deny all;
    }

    error_page 404 /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/www;
    }       

    location ~ \.php$ {
                #fastcgi_pass 127.0.0.1:9000;
                # With php5-fpm:
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;

    }   
}

我还安装了 All In One SEO Pack 插件,并从我的管理员启用永久链接到此格式 /%year%/%monthnum%/%postname%/

我搜索了很多论坛,但仍无法找到确切的解决方案。请帮助我。

谢谢

4 个答案:

答案 0 :(得分:3)

终于找到了答案。这是Varnish配置的问题,它不允许创建cookie。

打开清漆配置。在我的情况下,文件位于/etc/varnish/default.vcl并添加以下行

# Drop any cookies sent to Wordpress.
sub vcl_recv {
        # Allow posts preview 
        if (req.url ~ "preview=true") { 
                return(pass); 
        }
        if (!(req.url ~ "wp-(login|admin)")) {
                unset req.http.cookie;
        }
}

并重新启动nginx和varnish

sudo service nginx restart

sudo service varnish restart

答案 1 :(得分:1)

我试图在Ubuntu 12.04 + nginx + php-fpm上重现你的问题但没有效果。这意味着预览按预期工作。唯一的区别是我没有注释行fast_cgi_pass 127.0.0.1:9000并注释掉了另一个。正如我所看到你在标签中加了'清漆',所以也许这里的清漆存在问题 - > http://wordpress.org/support/topic/nginx-cant-preview-posts-404-error

答案 2 :(得分:0)

我在wordpress服务器中所需的只有2个块

location / {
    try_files $uri /index.php$request_uri;
}
location ~ \.php {
    include fastcgi_params;
    fastcgi_pass   unix:/var/run/php5-fpm.sock; # replaced this with ur sock location
}

我不知道SEO插件,我使用另一个。

答案 3 :(得分:0)

更改:

location / {
    try_files $uri $uri/ /index.php?q=$uri&$args;
}

为:

location / {
    try_files $uri $uri/ /index.php?$args;
}