Nginx 404到301基于URI重定向

时间:2014-02-10 20:14:19

标签: php wordpress redirect nginx

我正在尝试在WordPress中创建多个404重定向,我目前正在使用它:

error_page 404 @foobar;

location @foobar {
    rewrite  .* / permanent;
}

我知道这是为了重定向到主页,但是 此方法根本不起作用 ,因为它默认为常规的WordPress 404.php文件包含在主题中。这很好,但我需要通过Nginx而不是WP来重定向,因为我需要在页面被声明为404后创建不同的重定向。

实施例: 假设我的WP网站上有大约10个类别。 我有来去的帖子,一旦帖子消失,我想将该帖子(因为某个类别中的每个帖子都有一个唯一的标识符)重定向到基类。

示例:重定向不存在的帖子

/i-love-soup-cause-it-tastes-so-good-campbellssoup ---> /category/campbellssoup

/toystory-3-is-a-great-movie-coolmovies ---> /category/coolmovies

基本上我需要在URI建立为404之后才创建多个重定向到多个位置。有什么想法吗?

修改

好的,使用

fastcgi_intercept_errors on;

我设法从wordpress中取出虚拟错误。现在我重定向到@foobar工作,但我无法将uri转移到@foobar位置块。我猜这与我的/ location块中的try_files有关。

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

1 个答案:

答案 0 :(得分:0)

首先,配置中存在语法错误,应该是error_page 404 = @fallback。 只有当wordpress生成404时,这应该可以正常工作,。我的猜测是包含类似404.php的内容。我也不确定您是否可以更改指定位置的状态代码。该文档明确指出,在不需要更改URI的情况下,可以使用回退位置,并提供使用对您没用的不同语法更改URL。 我首先要弄清楚WordPress是否自己处理404。如果是这种情况,则处理该文件中的重定向。 如果不是,那么只需创建自己的页面,以您熟悉的脚本语言处理重定向。如果你可以在错误页面的命名位置重写,那么@tcurvelo解决方案的底部应该可以解决问题。