JavaScript предлагает множество способов перенаправить пользователя на другую веб-страницу, если во время выполнения вашей программы вам нужно перейти на другую страницу.
Тот, который можно считать каноническим для перехода к новому URL-адресу, является
window.location = 'https://newurl.com'
Если вы хотите перенаправить на другой путь в том же домене, используйте:
window.location.pathname = '/new'
Для этого используется объект местоположение , предлагаемый API Истории .
Другие варианты перенаправления
Как и в большинстве случаев в программировании, существует множество способов выполнения одной и той же операции.
Поскольку window неявно присутствует в браузере, вы также можете сделать:
location = 'https://newurl.com'
Другой способ – установить href свойство местоположение :
window.location.href = 'https://newurl.com'
местоположение также имеет метод assign() , который принимает URL-адрес и выполняет то же самое:
window.location.assign('https://newurl.com')Метод replace() отличается от предыдущих способов тем, что он перезаписывает текущую страницу в истории. Текущая страница удалена, поэтому, когда вы нажимаете кнопку “назад”, вы возвращаетесь на страницу, которая теперь является последним посещенным.
window.location.replace('https://newurl.com')Это может быть удобно в некоторых ситуациях.
Различные способы доступа к объекту окна
Браузер предоставляет доступ к self и верхние объекты, которые все ссылаются на окно объект , так что вы можете использовать их вместо окна во всех приведенных выше примерах:
self.location = 'https://newurl.com' top.location = 'https://newurl.com'
301 перенаправление с использованием директивы на стороне сервера
Во всех приведенных выше примерах рассматривается случай программного решения о переходе на другую страницу.
Если вам нужно перенаправить, потому что текущий URL-адрес устарел, и переместить новый URL-адрес, лучше всего использовать директиву уровня сервера и установить HTTP-код 301, чтобы сигнализировать поисковым системам, что текущий URL-адрес постоянно перемещен на новый ресурс.
Это можно сделать с помощью .htaccess если используется Apache. Netlify делает это через файл _redirects .
Возможны ли 301 перенаправление с использованием JavaScript?
К сожалению, нет.
Это невозможно сделать на стороне клиента.
Код ответа HTTP 301 должен быть отправлен с сервера задолго до того, как браузер запустит JavaScript.
Эксперименты показывают, что перенаправления JavaScript интерпретируются поисковыми системами как 301 перенаправление. См. этот пост поисковой системы для справки.
Использование JavaScript для перенаправления пользователей может быть законной практикой. Например, если вы перенаправляете пользователей на внутреннюю страницу после входа в систему, вы можете использовать для этого JavaScript. При изучении JavaScript или других методов перенаправления, чтобы убедиться, что ваш сайт соответствует нашим рекомендациям, учитывайте намерение. Имейте в виду, что 301 перенаправление лучше всего подходит при перемещении вашего сайта, но вы можете использовать перенаправление JavaScript для этой цели, если у вас нет доступа к серверу вашего сайта.
Используйте мета-тег HTML
Другой вариант – использовать мета-тег в вашем HTML:
Это приведет к тому, что браузер загрузит новую страницу после того, как он загрузил и интерпретировал текущую, и ничего не сообщит поисковым системам. Лучшим вариантом всегда является использование перенаправления на уровне сервера 301.
Оригинал: “https://flaviocopes.com/how-to-redirect-using-javascript/”