Мы переместили наш веб-сайт в новый домен, и наш отдел SEO хочет иметь некоторое перенаправление со старых URL-адресов на новые URL-адреса с кодом состояния 404.Я не знаю, возможно ли это, и хочу узнать мнение сообщества
Мой вопрос: я хочу попытаться настроить перенаправление с внутреннего URL-адреса на внешний URL-адрес с кодом состояния 404 в Nginx. Я пробовал с перезаписать
и вернуть
. Но похоже, что это невозможно.
rewrite
может возвращать только 301 или 302 в качестве кода состояния. return
не может выполнять перенаправление с 404. перезаписать последний
и вернуть 404
. Но это не сработало, потому что я хочу перенаправить на внешний URL. У кого-нибудь есть идеи?
Нельзя. 404 - это не код статуса перенаправления, это код статуса ошибки, поэтому веб-браузеры, которые его получат, будут рассматривать его как ошибку, а не как перенаправление. Если вы хотите сказать, что страницы больше нет, и отправить браузеру найти ее в другом месте, то для этого и нужен код 301.
Вы не можете контролировать код состояния HTTP внешней страницы.
Однако, если вы хотите достичь , отображать содержимое внешней страницы со статусом 404 на вашем сайте , это вполне возможно. Вы можете использовать proxy_pass
.
Но это усложняется, если удаленное местоположение выдает 200
. Потребуются два местоположения:
location = /foo {
error_page 404 = @ext_404;
return 404;
}
location @ext_404 {
proxy_pass https://bar.example.com;
rewrite .* /lorem-ipsum break;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host bar.example.com;
proxy_set_header X-NginX-Proxy true;
proxy_redirect off;
proxy_connect_timeout 1;
proxy_intercept_errors off;
expires 30;
}
В результате, когда кто-то посещает https://your.example.com/foo
, он фактически увидит содержимое https: // bar. example.com/lorem-ipsum
с кодом статуса 404.
404 может быть сделано только внутренне, это не может быть сделано для внешнего URL. Вы можете только направить его, но не с помощью 404.404 означает, что его нет или его не существует.
Если оба сервера или URL-адреса принадлежат вам, вы можете перенаправить на страницу php с заголовком php 404 и обновленной мета-метой html, которая будет перенаправлять на новый URL-адрес . Но это неправильный способ перенаправления