我最近把我的wordpress网站从一个主机移到另一个主机。 以前我用Apache来运行wordpress,但后来用nginx进行configuration,按照这个教程在Ubuntu 12.04上如何用nginx安装Wordpress 。
一切工作正常,但是当我尝试从pipe理面板预览一个新的职位,它显示未find错误。 但所有已发布的post都正常工作。
当我点击预览post它显示我的url,如http://mydomain.com/?p=2671&preview=true,但页面是404。
页面标题没有find?p = 2671&preview = true
我的nginxconfiguration是:
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; } }
我也安装了所有在一个search引擎优化包插件,并从我的pipe理我启用永久链接到这种格式/%year%/%monthnum%/%postname%/
我search了很多论坛,但仍然无法find确切的解决scheme。 请帮助我。
谢谢
终于找到了答案。 这是清漆配置的问题 ,它不允许创建一个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
我试着在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
我所需要的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插件,我使用不同的。
更改:
location / { try_files $uri $uri/ /index.php?q=$uri&$args; }
至:
location / { try_files $uri $uri/ /index.php?$args; }