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