너무 많은 리디렉션: 이 오류의 의미와 해결 방법
게시 됨: 2022-09-27리디렉션 루프라고도 하는 "너무 많은 리디렉션"은 요청된 웹 페이지가 서버에서 콘텐츠를 검색하기 위해 따라야 하는 무한한 리디렉션으로 인해 로드에 실패한 경우 브라우저에서 반환하는 오류입니다. 리디렉션 루프는 종종 서버 측에서 충돌하는 리디렉션이나 CDN 구성 오류로 인해 발생할 수 있습니다.
"너무 많은 리디렉션" 오류 수정에 대한 이 포괄적인 가이드에서는 리디렉션을 구성할 수 있는 위치, 리디렉션 루프의 가장 일반적인 이유 및 단계별 방식으로 해결하는 방법을 배웁니다.
리디렉션이란 무엇이며 어떻게 작동합니까?
웹사이트 리디렉션은 요청된 웹 페이지의 위치를 찾기 위해 콘텐츠를 전달하는 동안 수행해야 하는 단계로 정의할 수 있습니다. 리디렉션 규칙으로 달성한 변경 사항이 주소 표시줄에 웹 사이트 주소가 표시되는 방식만 반영하는 것처럼 보일 수 있지만 브라우저는 배후에서 일련의 작업을 수행하여 각 리디렉션이 로드할 수 있는 위치를 결정합니다. 리디렉션 경로에 의해 정의된 최종 위치의 콘텐츠.
강제 HTTPS, 웹사이트의 www 버전 또는 다른 도메인 이름 로드 - 리디렉션은 웹사이트 호스팅에서 널리 사용되어 콘텐츠 전달을 사용자 정의할 수 있습니다. 도메인 리디렉션을 설정하는 방법에는 여러 가지가 있으며 올바르게 구성된 한 브라우저는 사용자가 만든 규칙을 따르는 데 문제가 없습니다.
임시 및 영구 리디렉션
구성할 수 있는 리디렉션에는 임시 및 영구의 두 가지 주요 유형이 있습니다. 발생한 리디렉션 유형에 따라 웹 서버는 302 또는 301 HTTP 상태 코드를 반환합니다.
302 HTTP 응답 코드는 특정 웹 주소가 일시적으로 다른 위치로 리디렉션되었음을 보여줍니다. 그러나 웹 사이트에서 영구 리디렉션 규칙을 제거했지만 캐시를 플러시하지 않아 변경 사항이 표시되지 않는 경우 임시 리디렉션이 수행되는 경우가 있습니다.
이것은 WordPress 캐싱 플러그인 중 하나를 포함하여 모든 종류의 캐싱 솔루션을 사용하는 경우 발생할 수 있습니다. 브라우저는 방문하는 웹사이트의 캐시된 버전도 저장합니다. 여기에는 이전 리디렉션이 포함됩니다.
영구 리디렉션은 301 HTTP 상태 코드를 반환하고 웹사이트 또는 웹사이트의 특정 페이지가 영구적으로 이동되었음을 나타냅니다. 이는 HTTPS 또는 웹사이트의 www 버전으로 리디렉션되는 경우 해당 위치가 다음 위치에 있음을 의미하지 않습니다. 파일 시스템이 변경되었습니다.
가장 일반적인 리디렉션은 무엇입니까?
HTTP에서 HTTPS 웹 프로토콜로의 리디렉션과 www가 없는 웹사이트에서 www 버전으로의 리디렉션은 구성되는 가장 일반적인 두 가지 규칙입니다. HTTPS로의 리디렉션은 SSL 인증서를 사용하여 모든 웹 트래픽이 암호화되도록 하는 반면 www로의 리디렉션은 CNAME 레코드를 사용하여 콘텐츠 전송 네트워크를 웹사이트와 통합하는 데 자주 사용됩니다.
HTTP에서 HTTPS로
HTTP에서 HTTPS로의 리디렉션(종종 HTTPS 강제라고도 함)은 안전하지 않은 HTTP 연결을 통해 웹사이트 방문자에게 콘텐츠가 전달되지 않도록 구성할 수 있습니다. 웹 사이트에 유효한 SSL/TLS 인증서가 설치된 경우 일반적으로 HTTPS를 수동으로 강제 적용할 필요가 없지만 이러한 리디렉션을 추가하는 것은 혼합 콘텐츠를 처리하는 방법 중 하나가 될 수 있습니다.
혼합 콘텐츠
웹사이트의 혼합 콘텐츠는 기본 HTML 파일이 HTTPS를 통해 로드되지만 이미지, Javascript 또는 CSS 파일을 포함하여 참조되는 다른 리소스가 HTTP를 통해 방문자에게 전달되는 상황으로 정의할 수 있습니다. 유효한 SSL 인증서가 설치되어 있더라도 웹 페이지에서 혼합 콘텐츠가 식별되면 브라우저에 보안 경고가 계속 표시됩니다.
혼합 콘텐츠 문제를 해결하기 위해 리디렉션을 설정하는 것은 일반적으로 최상의 솔루션이 아닙니다. 대신 HTTP 대신 HTTPS 프로토콜을 포함하도록 웹사이트 데이터베이스의 모든 URL(Uniform Resource Locators)을 업데이트해야 합니다. 이는 WP CLI가 제공하는 검색 바꾸기 기능 또는 WordPress 플러그인을 사용하여 수동으로 수행할 수 있습니다. 다른 콘텐츠 관리 시스템의 경우 phpMyAdmin과 같은 데이터베이스 관리 도구를 사용하거나 명령줄에서 MySQL/MariaDB 쿼리를 실행하여 주소를 수정해야 합니다.
리디렉션을 구성할 수 있는 3가지 주요 위치
리디렉션은 일반적으로 다음 세 가지 주요 위치 중 하나에서 구성할 수 있습니다.
- 웹 서버 구성 . 웹 서버에서 사용하는 전역 구성 파일에는 일반적으로 호스팅되는 모든 웹 사이트에 적용되는 설정이 포함되어 있으므로 그 중 하나에 리디렉션을 추가하는 것은 권장되지 않습니다. 각 웹 사이트에 대해 개별적으로 생성된 로컬 구성 파일을 사용하는 것은 서버 측에서 리디렉션을 설정하는 표준입니다.
- 콘텐츠 관리 시스템 구성 . 콘텐츠 관리 시스템은 웹사이트 주소를 데이터베이스에 상수로 저장합니다. 이 주소는 HTTPS를 강제 실행하거나 www 버전을 로드하는 데 사용할 수 있습니다.
- 콘텐츠 전송 네트워크 구성 . CDN은 원본 서버에서 콘텐츠를 검색하고 웹사이트 방문자에게 전달하는 방법을 정의하는 자체 리디렉션을 강제 실행합니다.
웹 서버 구성 파일의 리디렉션
웹 서버가 읽을 구성 파일 중 하나에서 로컬로 리디렉션 규칙을 설정할 수 있습니다. Apache가 웹 서버로 사용되는 경우 리디렉션 규칙은 일반적으로 웹 사이트의 로컬 .htaccess 파일에 설정됩니다. NGINX를 사용하는 경우 리디렉션은 웹사이트의 전역 구성을 나타내는 NGINX 서버 블록 내에서 구성됩니다.
아래에서 .htaccess에 추가할 수 있는 두 개의 리디렉션을 볼 수 있습니다. 하나는 HTTPS를 강제 실행하고 다른 하나는 모든 웹 요청을 웹 사이트의 www 버전으로 보내는 것입니다. 엄격한 구문 규칙을 따라야 합니다. 그렇지 않으면 Apache가 로컬 구성 파일 중 하나에서 구문 오류를 감지하면 웹사이트가 다운될 위험이 있습니다.
WordPress용 리디렉션 플러그인을 사용하는 경우 리디렉션을 로컬 .htaccess 파일에도 쓸 가능성이 가장 높습니다.
WordPress 구성에서 리디렉션
WordPress 및 기타 콘텐츠 관리 시스템은 웹사이트 주소를 데이터베이스에 저장하고 콘텐츠가 요청될 때마다 설정이 로드됩니다. 주소는 도메인 이름과 웹 프로토콜(HTTP 또는 HTTPS)로 구성된 URL을 나타냅니다. 데이터베이스의 URL을 변경하여 웹사이트를 www로 리디렉션하거나 SSL/TLS 인증서가 설치된 경우 HTTPS를 강제 실행할 수 있습니다.
WordPress는 WP_HOME 상수를 사용하여 WordPress 주소 설정을 식별하고 WP_SITEURL을 사이트 주소로 식별하며 wp_options 테이블에 siteurl 및 home으로 저장됩니다. WordPress 주소 설정은 WordPress 설치 위치를 나타내고 사이트 주소는 웹사이트를 열기 위해 브라우저 주소 표시줄에 입력해야 하는 URL을 나타냅니다.
CDN에 의해 강제 리디렉션
콘텐츠 전송 네트워크 구성은 HTTP 또는 HTTPS를 통해 원본 서버에서 요청된 웹 페이지를 검색하고 웹사이트 방문자에게 전달하는 방법을 정의합니다. 정확한 절차는 선택한 암호화 모드에 따라 결정됩니다. 최신 콘텐츠 전송 네트워크에서 제공하는 세 가지 주요 암호화 유형이 있습니다.
- 전체 또는 종단 간 암호화 . 종단 간 암호화는 콘텐츠 전달의 모든 단계에서 HTTPS가 사용되도록 합니다. 이는 브라우저에서 CDN으로, CDN에서 원본 서버로의 모든 웹 요청이 항상 HTTPS를 통해 전송됨을 의미합니다. 종단 간 암호화에는 두 개의 SSL 인증서가 필요합니다. 하나는 원본 서버에 설치되고 다른 하나는 CDN에서 구현됩니다.
- 유연하거나 부분적인 암호화 . 부분 암호화는 브라우저의 모든 연결을 강제로 CDN이 HTTPS를 통해 이동하도록 하는 반면 CDN은 HTTP를 통해 원본 서버에 연결합니다. 그러나 귀하의 웹사이트는 여전히 모든 브라우저에서 안전한 것으로 표시됩니다.
- 암호화 없음 . 암호화를 비활성화하면 콘텐츠가 HTTP를 통해 전달되고 모든 브라우저에 웹사이트를 로드하는 보안 경고가 표시됩니다.
CDN이 HTTPS를 통해 연결을 시작하려고 시도하지만 웹 서버가 HTTPS 요청을 HTTP로 리디렉션하는 경우 리디렉션 루프가 생성되어 웹 사이트에 너무 많은 리디렉션 오류가 표시됩니다.
"너무 많은 리디렉션" 오류는 무엇을 의미합니까?
리디렉션 루프라고도 하는 "너무 많은 리디렉션"은 두 개의 경쟁 리디렉션으로 인해 콘텐츠 전달 중에 발생하는 충돌을 나타내는 오류 메시지입니다. 리디렉션 루프가 식별되면 최신 브라우저는 다음과 같은 오류 변형 중 하나를 반환합니다.
- 페이지가 제대로 리디렉션되지 않습니다 . Firefox에서 이 오류 메시지를 볼 수 있습니다.
- 페이지가 작동하지 않습니다. ERR_TOO_MANY_REDIRECTS . Google 크롬은 리디렉션 루프에 걸리면 이 오류를 표시합니다.
- 리디렉션이 너무 많이 발생했기 때문에 Safari에서 페이지를 열 수 없습니다 . 이런 식으로 Safari는 웹 사이트를 로드하기 전에 해결해야 하는 리디렉션 충돌을 알려줍니다.
너무 많은 리디렉션 오류를 수정하려면 .htaccess에 구성되고 콘텐츠 관리 시스템에 의해 강제된 리디렉션을 검토하고 콘텐츠 전송 네트워크에서 사용하는 암호화 모드가 있는지 확인해야 합니다.
웹사이트에서 리디렉션 루프를 일으키는 가장 일반적인 3가지 잘못된 구성과 해결 방법
충돌을 식별하기 위해 모든 리디렉션을 살펴보는 것은 쉬운 일이 아닙니다. 특히 일부가 웹 서버의 전역 구성에 추가되어 서버 전체에 적용되는 경우에는 더욱 그렇습니다. 그러나 불가피하게 리디렉션 루프로 이어지는 몇 가지 매우 자주 볼 수 있는 잘못된 구성이 있습니다.
웹사이트에 '리디렉션이 너무 많음'이 표시되는 가장 일반적인 세 가지 이유는 다음과 같습니다.
- 유효한 SSL/TLS 인증서가 없습니다 . SSL 인증서가 만료되었거나 다른 문제가 있는 경우 리디렉션 루프가 발생할 수 있지만 웹사이트에서 여전히 HTTPS를 강제 실행하려고 합니다.
- CMS 웹사이트 주소 설정이 올바르지 않습니다 . WordPress 또는 다른 콘텐츠 관리 시스템에서 사용하는 웹사이트 주소 설정에 지정된 프로토콜이 구성된 다른 리디렉션과 충돌하면 너무 많은 리디렉션 오류가 발생합니다.
- 잘못된 CDN 암호화 모드가 선택되었습니다 . CDN 구성에서 전체 암호화로 전환할 때 리디렉션 루프를 보는 것이 특히 일반적입니다. 종단 간 암호화를 사용하기 위한 요구 사항이 원본 서버에서 충족되지 않으면 문제가 발생할 수 있습니다.
유효한 SSL/TLS 인증서가 없습니다.
웹사이트에 설치된 유효한 CA 서명 SSL/TLS 인증서는 서버에서 브라우저로 전달될 때 모든 웹 트래픽이 암호화되도록 합니다. 또한 HTTPS는 SSL 인증서가 만료될 때까지 완벽하게 작동하고 자동으로 갱신되지 않는 서버 수준에서 강제될 가능성이 있습니다. 다음과 같은 이유로 발생할 수 있습니다.
- 자동 SSL/TLS 인증서 갱신이 활성화되어 있지 않습니다 . SSL이 자동으로 갱신되지 않은 경우 새 인증서를 주문하여 설치해야 합니다.
- SSL 도메인 유효성 검사에 실패했습니다 . Let's encrypt 또는 무료 인증서를 제공하는 가장 널리 사용되는 SSL 공급자 중 하나인 Sectigo는 새 인증서를 발급해야 하는 도메인 이름을 사용자가 제어하는지 확인하기 위해 다양한 문제를 구현합니다. 도메인 유효성 검사가 실패하면 유효성 검사 요청을 차단하는 문제를 해결할 때까지 새 인증서가 설치되지 않습니다.
- 루트 또는 중간 인증서 중 하나가 만료되었습니다 . 이 경우 SSL 공급자가 문제를 해결한 후 인증서를 다시 설치해야 합니다.
해결 방법
SSL 검사기를 사용하여 웹사이트에 유효한 인증서가 설치되어 있는지 확인하십시오. 만료되었거나 SSL 검사기에 다른 문제가 표시되면 인증서를 다시 설치하십시오. Let's Encrypt 또는 Sectigo에서 무료 인증서 발급에 실패하면 유효성 검사 요청을 차단할 수 있는 항목을 확인해야 합니다.
SSL 도메인 유효성 검사가 실패하는 이유 중 하나는 콘텐츠 전달 네트워크가 통합되어 있기 때문입니다. 특히 Let's Encrypt 또는 Sectigo가 마지막으로 인증서를 발급했을 때 아직 구성하지 않은 경우입니다. 새 무료 SSL 인증서를 설치해야 하는 경우 CDN을 일시 중지하여 웹 사이트가 서버를 직접 가리키도록 하고 콘텐츠 전송 네트워크에 속한 IP 주소가 아닌 기본 IP 주소를 반환합니다. 이렇게 하면 원본 서버에서 인증서를 갱신하여 종단 간 암호화를 계속 사용할 수 있습니다.
CMS 웹사이트 주소 설정이 올바르지 않습니다.
WordPress 및 기타 모든 콘텐츠 관리 시스템은 웹사이트 주소를 데이터베이스에 저장하고 콘텐츠가 요청될 때마다 로드하여 HTTPS 또는 www로 강제 리디렉션할 수 있습니다. 잘못된 프로토콜이나 도메인 이름을 사용하여 사이트 주소 설정이 잘못 설정되면 리디렉션 오류가 너무 많이 표시되는 등 문제가 발생합니다.
해결 방법
SSL 인증서가 설치된 경우, 특히 CDN 구성에서 종단 간 암호화가 보장되는 경우 WordPress 주소 및 사이트 주소 설정 모두에서 HTTPS를 사용하십시오. 웹사이트를 www 버전으로 리디렉션한 경우 WP_SITEURL 및 WP_HOME 참가자 모두 이를 반영해야 합니다.
WordPress 대시보드의 일반 설정 메뉴를 열고 필요한 WordPress 주소 및 사이트 주소에 할당된 값을 수정합니다. 변경 사항 저장을 클릭하여 WordPress가 데이터베이스의 설정을 수정하도록 합니다.
잘못된 CDN 암호화 모드가 선택됨
원본 서버에 구성된 리디렉션과 CDN에서 사용하는 암호화 모드 간에 충돌이 있을 수 없습니다. 그렇지 않으면 모든 브라우저에서 웹사이트를 로드하려고 하면 "너무 많은 리디렉션" 오류가 표시됩니다. 웹 사이트의 요구 사항에 더 잘 맞는 올바른 암호화 모드를 선택했는지 확인하십시오.
콘텐츠 전송 네트워크는 항상 서버와 브라우저 간의 트래픽을 암호화하므로 암호화를 완전히 비활성화하지 않는 한 원본 서버에 SSL을 설치하지 않도록 선택할 수 있습니다. 부분 암호화를 선택하고 HTTP를 통한 CDN의 요청 수락 문제를 방지하기 위해 서버 수준에서 HTTPS를 강제 실행하지 않도록 하십시오.
종단 간 암호화를 선택한 경우 유효한 SSL 인증서가 원본 서버에 설치되어 있어야 CDN이 HTTPS를 통해 연결할 수 있습니다. 새 인증서를 수동으로 설치할 수 없는 경우 SSL을 갱신해야 할 때마다 도메인 유효성 검사 문제를 방지하기 위해 CDN을 일시적으로 일시 중지합니다.
해결 방법
현재 설정을 검토하고 어떤 암호화 모드를 선택해야 하는지 결정하십시오. 다른 암호화 유형으로 전환하여 원본 서버에서 충돌하는 리디렉션 또는 종단 간 암호화를 지원하는 데 필요한 SSL 부재로 인해 발생한 웹 사이트의 "너무 많은 리디렉션" 오류를 수정합니다.
3단계로 "너무 많은 리디렉션"을 수정하는 방법
아래 단계에서는 충돌하는 리디렉션을 식별하고 웹사이트에서 리디렉션 루프를 빠르게 수정하는 방법을 배웁니다.
1단계. 웹사이트의 리디렉션 경로 확인
많은 출처에서 리디렉션 루프 문제를 해결하기 위한 첫 번째 단계로 브라우저 캐시를 지울 것을 권장합니다. 그러나 다른 오류와 마찬가지로 서버에서 문제가 해결된 경우에만 작동하지만 브라우저는 여전히 손상된 웹사이트 버전을 캐시에 저장합니다. 일반적으로 웹사이트를 변경한 후 캐시를 플러시하여 반영되는지 확인할 수 있습니다.
"너무 많은 리디렉션"을 수정하는 첫 번째 단계는 웹 사이트의 리디렉션 경로를 따라 브라우저가 정확히 어디에서 멈추는지 확인하는 것입니다. 이를 수행하는 가장 좋은 방법은 리디렉션 검사기 중 하나를 사용하는 것입니다.
모든 또는 대부분의 리디렉션 검사기는 다양한 네트워크 프로토콜을 사용하여 데이터를 전송하기 위한 훌륭한 명령줄 도구인 cURL을 사용합니다. 이를 사용하여 HTTP 헤더 정보를 얻을 수 있습니다. 이 정보는 웹사이트 로드를 시도하면 정확히 어떤 일이 발생하는지 보여줍니다.
SSH를 통해 서버에 연결되면 다음과 같은 간단한 Bash 스크립트를 redirects.sh라는 파일에 저장합니다. chmod +x redirects.sh를 실행하여 실행 가능하게 만드십시오.
스크립트를 웹사이트의 도메인 이름으로 전달하여 실행합니다. 예: ./redirects.sh wordpress.com.
2단계. 충돌하는 리디렉션 식별
위의 스크립트를 실행한 결과를 확인하십시오. 브라우저가 충돌하는 규칙을 따르는 것을 포기할 때 "너무 많은 리디렉션"이 나타나는 리디렉션의 종류를 알려줍니다. 아래 출력에서 HTTP 및 HTTPS에서 무한 리디렉션이 있음을 알 수 있습니다.
각 리디렉션의 반환 상태 코드를 확인하세요. 영구 리디렉션은 종종 웹사이트의 .htaccess 파일에서 오는 반면 임시 리디렉션은 일반적으로 웹사이트 코드 내에서 생성되므로 WordPress 또는 사용하는 다른 콘텐츠 관리 시스템에서 제어합니다.
3단계. 리디렉션 루프 처리
식별한 충돌하는 리디렉션 규칙에 따라 해당 규칙을 반복할 위치를 알 수 있습니다. 논의한 바와 같이 확인해야 할 세 가지 주요 사항이 있습니다. 로컬 .htaccess 파일, CMS에 의해 웹사이트 데이터베이스에 저장된 웹사이트 주소 설정, CDN 구성에서 선택한 암호화 모드입니다.
웹 사이트가 HTTP와 HTTPS 간에 리디렉션을 시도하는 동안 리디렉션 루프가 발생하면 유효한 SSL/TLS 인증서가 설치되어 있는지 확인하고 웹 사이트와 통합된 경우 CDN 구성에서 어떤 암호화 모드가 선택되었는지 확인합니다. 웹사이트에 지정되고 WordPress 데이터베이스에 저장된 사이트 주소 및 WordPress 주소를 확인합니다.
가이드의 이전 섹션에 제공된 지침에 따라 일반적인 구성 오류를 해결하고 웹사이트에서 "너무 많은 리디렉션"을 수정하십시오.
결론
리디렉션 루프라고도 하는 "너무 많은 리디렉션" 오류 메시지는 많은 리디렉션으로 인해 브라우저가 콘텐츠를 로드하지 못한 경우 웹사이트에 나타납니다. 리디렉션 루프를 수정하려면 리디렉션 경로에 존재하는 충돌을 해결해야 합니다.
온라인 비즈니스 운영에는 많은 어려움이 따르며 서버 인프라를 설정하고 오류를 수정하는 데 시간을 소비하는 것이 항상 가능한 것은 아닙니다. 또한 올바른 솔루션이 있다고 해서 문제 없이 웹사이트를 계속 운영할 수 있도록 전담 팀을 고용할 필요가 없을 때도 좋은 생각이 아닙니다.
약 백만 개의 WordPress 웹 사이트를 보호하는 BackupBuddy 및 iThemes Security Pro는 애플리케이션 수준 보안 및 데이터 복구를 위한 업계 최고의 솔루션입니다. 사이트 스캔 기능이 제공하는 정기적인 취약점 검사 및 맬웨어 검사를 통해 공격 표면을 크게 줄이고 알려진 모든 취약점으로부터 웹사이트를 보호할 수 있습니다. 자동 백업 및 간편한 원클릭 복원 — BackupBuddy를 사용하면 모든 악의적인 공격 및 일반적인 오류로부터 복구할 수 있습니다.
WordPress 보안 및 보호를 위한 최고의 WordPress 보안 플러그인
WordPress는 현재 모든 웹사이트의 40% 이상을 차지하므로 악의적인 의도를 가진 해커의 쉬운 표적이 되었습니다. iThemes Security Pro 플러그인은 WordPress 보안에서 추측을 배제하여 WordPress 웹사이트를 쉽게 보호하고 보호할 수 있습니다. 귀하의 WordPress 사이트를 지속적으로 모니터링하고 보호하는 전임 보안 전문가를 직원으로 두는 것과 같습니다.
Kiki는 정보 시스템 관리 학사 학위를 보유하고 있으며 Linux 및 WordPress에서 2년 이상의 경력을 보유하고 있습니다. 그녀는 현재 Liquid Web 및 Nexcess의 보안 전문가로 일하고 있습니다. 그 전에 Kiki는 Liquid Web Managed Hosting 지원 팀의 일원으로 수백 명의 WordPress 웹사이트 소유자를 도왔고 그들이 자주 접하는 기술적 문제를 배웠습니다. 글쓰기에 대한 그녀의 열정으로 그녀는 지식과 경험을 공유하여 사람들을 도울 수 있습니다. 기술 외에도 Kiki는 우주에 대해 배우고 진정한 범죄 팟캐스트를 듣는 것을 즐깁니다.