JavaScript를 사용하여 다른 웹 페이지로 리디렉션하는 방법

JavaScript는 사용자를 다른 웹 페이지로 리디렉션 하는 다양한 방법을 제공합니다. 일반 JavaScript를 사용하여 표준 방법을 배우고 보유한 모든 옵션을 찾으십시오.

JavaScript는 프로그램 실행 중에 다른 페이지로 이동해야 하는 경우 사용자를 다른 웹 페이지로 리디렉션 하는 다양한 방법을 제공합니다.

새 URL로 이동하기 위해 표준으로 간주 할 수 있는 URL은 다음과 같습니다.

window.location = 'https://newurl.com'


동일한 도메인에서 다른 경로로 리디렉션하려면 다음을 사용하십시오.

window.location.pathname = '/new'


이것은 History API에서 제공 하는 location 객체를 사용하고 있습니다.

리디렉션 기타 옵션

프로그래밍의 대부분과 마찬가지로 동일한 작업을 수행하는 방법은 여러 가지가 있습니다.

window브라우저에서 암시 때문에, 당신은 할 수 있습니다 :

location = 'https://newurl.com'


또 다른 방법은 다음 location 속성 href를 설정하는 것입니다.

window.location.href = 'https://newurl.com'

 

locationassign() URL을 받아들이고 동일한 작업을 수행하는 메서드 도 있습니다.

window.location.assign('https://newurl.com')


이 replace() 방법은 히스토리의 현재 페이지를 다시 작성하기 때문에 이전 방법과 다릅니다. 현재 페이지는 "뒤로"버튼을 클릭하면, 그래서 당신이 것을 다시 페이지로 이동, 닦아 이제 마지막 방문이다.

window.location.replace('https://newurl.com')

이것은 어떤 상황에서 편리할 수 ​​있습니다.

window물체에 도달하는 다양한 방법

브라우저는 모두 객체를 참조하는 self 및 top객체를 노출 window 하므로 window위의 모든 예제 대신 사용할 수 있습니다.

self.location = 'https://newurl.com'

top.location = 'https://newurl.com'

서버 측 지시문을 사용하여 301 리디렉션

위의 예는 모두 다른 페이지로 이동하려는 프로그래밍 방식 결정의 경우를 고려합니다.

현재 URL이 오래되어 리디렉션 해야 하고 새 URL을 이동해야 하는 경우 서버 수준 지시문을 사용하고 301 HTTP 코드를 설정하여 현재 URL이 새 리소스로 영구적으로 이동했음을 검색 엔진에 알리는 것이 가장 좋습니다.

. htaccessApache를 사용하는 경우 이를 통해 수행할 수 있습니다. Netlify는 _redirects파일을 통해이를 수행합니다.

자바 스크립트를 사용하여 301 리디렉션이 가능합니까?

불행히도.

클라이언트 측에서는 불가능합니다.

301 HTTP 응답 코드는 브라우저에서 JavaScript가 실행되기 훨씬 전에 서버에서 전송되어야 합니다.

실험에 따르면 자바 스크립트 리디렉션은 301 리디렉션과 같은 검색 엔진에서 해석됩니다. 참조 이 검색 엔진 토지 포스트 참조하십시오.

구글 말한다 :

JavaScript를 사용하여 사용자를 리디렉션 하는 것은 합법적 인 관행 일 수 있습니다. 예를 들어 사용자가 로그인한 후 내부 페이지로 리디렉션 하는 경우 JavaScript를 사용하여 그렇게 할 수 있습니다. 사이트가 Google 가이드라인을 준수하는지 확인하기 위해 자바 스크립트 또는 기타 리디렉션 방법을 검토할 때 의도를 고려하세요. 사이트를 이동할 때 301 리디렉션이 가장 좋지만 웹 사이트 서버에 액세스 할 수 없는 경우 이러한 목적으로 자바 스크립트 리디렉션을 사용할 수 있습니다.

HTML 메타 태그 사용
또 다른 옵션은 HTML에서 메타 태그를 사용하는 것입니다.

<html>
  <head>
    <meta http-equiv="refresh" content="0;URL=https://newurl.com/">
  </head>
</html>


이렇게 하면 브라우저가 현재 페이지를 로드하고 해석 한 후 새 페이지를 로드하고 검색 엔진에 아무것도 알리지 않습니다. 가장 좋은 방법은 항상 301 서버 수준 리디렉션을 사용하는 것입니다.

원문 출처 : flaviocopes

Comment