【发布时间】:2014-03-08 08:42:03
【问题描述】:
我正在尝试在 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;
}
【问题讨论】:
-
你不能同时做404和301,要么这个要么那个
-
我想捕获 404,并将所有 404 带入它们自己的位置块,这样我就可以处理基于 URI 的重定向。也许说起来容易做起来难,但这可以直接解决这个问题而无需使用插件。
-
如何将所有 404 发送到一个 php 脚本,该脚本会生成 404,这对你有用吗?
-
它会工作,但我有 404 位置块工作,我无法让重写工作,因为我无法获得正确的语法。我的模板有 wordpress 默认的 404.php,但我宁愿将所有旧帖子都重定向到它们曾经所属的类别。
标签: php wordpress redirect nginx