2

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

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

当我点击预览帖子时,它会显示像 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

4 回答 4

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 和清漆

sudo service nginx restart

sudo service varnish restart
于 2013-06-25T17:29:07.500 回答
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

于 2013-06-24T20:29:58.510 回答
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 插件,我使用的是不同的插件。

于 2013-06-24T20:43:42.290 回答
0

改变 :

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

至:

location / {
    try_files $uri $uri/ /index.php?$args;
}
于 2014-05-15T08:55:18.013 回答