仅当目标url有效时redirect到url

我有这样的redirect规则设置

#redirect old phpbb links to xenforo links if ( $arg_p ) { rewrite ^\/forum\/viewtopic\.php /forum/posts/$arg_p/? permanent; } 

它将发送一个301到任何匹配该正则expression式到新格式的url。

不过,我想知道是否有办法做到这一点redirect只有当目标url是有效的(在这种情况下,有效的手段,它不应该返回404或403)

你不能轻易做到这一点,而且你不太可能真的想这样做。

如果你做到这一点,那么除了自己提供请求之外 ,还需要向你的web应用程序查询每一个传入的请求,因此服务器的负载大约会翻一番。 这可能可以用一些聪明的embeddedLua代码来完成,但是我认为你可能不希望超载你的服务器。

最好只redirect一切,然后让目的地(你的新论坛)在必要时提供404服务。 这没有任何SEO影响,因为原来的链接已经是404。 但它提供了更好的用户体验,因为到死链接的stream量至less会看到新的论坛,而不是一个普通的白色的nginx 404页面。