Перенаправить на URL-адрес, только если URL-адрес назначения действителен
У меня есть настройка правила перенаправления, как это
#redirect old phpbb links to xenforo links
if ( $arg_p ) {
rewrite ^\/forum\/viewtopic\.php /forum/posts/$arg_p/? permanent;
}
Который будет отправлять 301 на любой URL, который соответствует этому регулярному выражению в новый формат.
Однако я хотел бы знать, есть ли способ сделать это перенаправление ТОЛЬКО, если целевой URL действителен (в этом контексте допустимый означает, что он не должен возвращать 404 или 403)
1 ответ
Вы не можете сделать это легко, и вряд ли вы действительно захотите.
Если бы вы могли это сделать, для каждого входящего запроса потребовался бы запрос к вашему веб-приложению, в дополнение к обработке самого запроса, что примерно удвоило бы нагрузку на ваш сервер. Вероятно, это можно сделать с помощью некоторого умного встроенного кода Lua, но я думаю, что вы, вероятно, не хотите перегружать свой сервер.
Лучше просто перенаправить все, а затем, если необходимо, назначить пункт назначения (ваш новый форум) 404. Это не имеет никакого влияния на SEO, потому что оригинальные ссылки уже были 404-ыми. Но это обеспечивает лучшее взаимодействие с пользователем, поскольку входящий трафик на неработающие ссылки будет, по крайней мере, видеть новый форум, а не просто белую страницу nginx 404.