WordPress 3.0&nginx – 永久链接,404问题

我在我的服务器上安装了nginx,FastCGI和PHP。 WordPress 3.0安装了一些怪物战斗之后,但安装和运行良好。

但是,当我将永久链接设置更改为默认设置以外的任何内容时,我在每篇文章,每篇文章和每页上都会遇到404错误。

我知道这是与nginx不支持.htaccess和WordPress混淆当页面被请求时去的地方。

我已经尝试了几次重写nginx conf文件甚至是nginx兼容性插件; 没有工作。 有一个重写,我设法阻止404错误,而不是WordPress发现后,我只是得到我的PHP确认页。 呸。

论坛上散布着类似问题的人。 有没有人有办法解决吗?

在你的位置/街区,

添加这个并删除任何非特定的重写规则:

try_files $uri $uri/ /index.php; 

如果wordpress在另一个根目录之外,而不是

 if (!-e $request_filename) { rewrite ^/wordpress/(.+)$ /wordpress/index.php?q=$1 last; } 

你可以有:

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

这个页面有完全一样的概念。 我应该先阅读并尝试一下: 在一个子目录下的nginx重写规则

经过很多痛苦:

 # if filename doesn't exist, take the request and pass to wordpress as a paramater if (!-e $request_filename) { rewrite ^/wordpress/(.+)$ /wordpress/index.php?q=$1 last; } 

如果请求的文件不存在,则将其传递给index.php。 这有点慢,我想我可以尝试不使用查询,但它确实工作… 🙂

你有没有尝试过nginx兼容性插件 ?

另外ElasticDog似乎提供了一个相当简洁的文章,让WP与nginx一起工作 – 其中包括获得漂亮的固定链接工作。

这是另一篇文章,似乎专门处理WordPress的nginx重写规则 。

这就是我在dreamhost的wordpress博客中解决我的永久链接的方法。

在文件夹/home/ftpusername/nginx/example.com/ (如果你没有,创建它)
用下面的内容创建了nginx.conf文件

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

重新启动了nginx
/etc/init.d/nginx重新加载

一些说明:
ftpusername和example.com必须根据您的系统进行更改。

就是这样!
祝你好运。

如果您使用的地点不是/ like,这不起作用:

〜.php $,我的意思是说,漂亮的链接将工作,但你的图形将在所有的地方。 所以你需要的是下面的确切说明。

http://www.pearlin.info

  location ~ \.php$ { try_files $uri $uri/ /index.php?$uri&$args; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } if (!-e $request_filename){ rewrite ^(.*)$ /index.php?url=$1 break; } 

我做了以下..

在/home/userrunningnginx/nginx/domain.com文件夹中

我有:

default.conf(文件)

 include /home/neukbaarofnietps/nginx/neukbaarofniet.com/drop; 

放下(档案)

 # Rather than just denying .ht* in the config, why not deny # access to all .invisible files location ~ /\. { deny all; access_log off; log_not_found off; } 

nginx.conf(文件)

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

}

WORDPRESS-NGINX.CONF(文件)

  ####################### # WP Super Cache # if the requested file exists, return it immediately if (-f $request_filename) { break; } set $supercache_file ''; set $supercache_uri $request_uri; if ($request_method = POST) { set $supercache_uri ''; } # Using pretty permalinks, so bypass the cache for any query string if ($query_string) { set $supercache_uri ''; } if ($http_cookie ~* "comment_author_|wordpress|wp-postpass_" ) { set $supercache_uri ''; } # if we haven't bypassed the cache, specify our supercache file if ($supercache_uri ~ ^(.+)$) { set $supercache_file /wp-content/cache/supercache/$http_host$1/index.html; } # only rewrite to the supercache file if it actually exists if (-f $document_root$supercache_file) { rewrite ^(.*)$ $supercache_file break; } # all other requests go to WordPress if (!-e $request_filename) { rewrite ^.*$ /index.php last; } 

将这个块添加到你的nginx.conf中应该可以解决这个问题:

  if (!-e $request_filename) { rewrite ^/wordpress_dir/(.+)$ /wordpress_dir/index.php?q=$1 last; } 

希望这可以帮助。

祝你好运。