본문 바로가기

개발

Apache URL 리다이렉트(RewriteRule)

728x90

Apache 웹 서버의 mod_rewrite 모듈을 사용하여 URL 리다이렉트하는데 사용

RewriteRule /example/(.*) https://example.com/$1 [R=301, L]
  • RewriteRule : 아파치의 mod_rewrite 모듈에서 URL을 재작성하기 위해 사용되는 지시어입니다.
  • /example/(.*) : 이 부분은 규칙이 들어오는 URL에서 찾을 패턴입니다. "/example/"로 시작하는 모든 URL을 일치시키고 (.*)을 사용하여 그 뒤의 모든 것을 캡처합니다. .*은 임의의 문자열을 일치시키는 정규 표현식입니다.
  • https://example.com/$1 : 이 것은 목표 또는 대체 URL입니다. 들어오는 URL이 패턴과 일치하면 이 URL로 리디렉션됩니다. 대체 URL의 $1은 패턴에서 캡처된 그룹(즉, (.*)에 의해 일치된 부분)을 참조합니다. 이것은 사실상 원래 URL의 경로를 새 URL에 추가합니다.
  • [R=301, L] : 이 부분은 규칙의 플래그로, 리다이렉트에 대한 세부적인 동작을 지정합니다. R=301은 301 상태 코드를 사용한 리다이렉트를 의미하며, 이는 "영구적으로 이동함"을 나타냅니다. L은 "마지막"을 의미하며, 규칙이 일치하는 경우 이후의 규칙을 더 이상 적용하지 않도록 합니다.

 

[R=301, L] - 301 Moved Permanently (영구 이동):

  • 301 Moved Permanently는 리다이렉트된 리소스가 새로운 위치로 영구적으로 이동되었음을 나타냅니다.
  • 브라우저는 이를 기억하고, 이후에 해당 리소스를 요청할 때는 새로운 위치로 바로 이동합니다.
  • 검색 엔진은 이를 인지하고, 기존 페이지의 랭킹을 새로운 위치로 이동합니다.

[R=302, L] - 302 Found (임시 이동):

  • 302 Found는 리다이렉트된 리소스가 일시적으로 다른 위치에 있음을 나타냅니다.
  • 브라우저는 이를 기억하지 않고, 사용자의 브라우저는 리다이렉션된 페이지에서 떠난 후에도 원래의 주소로 돌아갈 수 있습니다.
  • 검색 엔진은 리소스가 일시적으로 이동했음을 알고, 기존 페이지의 랭킹을 변경하지 않을 수 있습니다.

따라서 선택하는 것은 상황에 따라 다르며, 일반적으로 리소스가 영구적으로 새로운 위치로 이동하면 301을,
일시적으로 다른 위치에 있을 때는 302를 사용합니다.

 

  1. [L] (Last): 현재 규칙이 매칭되면 다음 규칙들을 무시하고 종료합니다.
  2. [R=code] (Redirect): 지정된 HTTP 상태 코드로 리다이렉트합니다. 예를 들면 [R=301] 또는 [R=302]와 같이 사용됩니다.
  3. [NC] (No Case): 대소문자를 무시하여 패턴을 매칭합니다.
  4. [F] (Forbidden): 403 Forbidden 상태 코드로 응답합니다.
  5. [G] (Gone): 410 Gone 상태 코드로 응답합니다.
  6. [QSA] (Query String Append): 쿼리 문자열을 유지한 채로 새로운 URL로 리다이렉트합니다.
  7. [NC] (No Case): 대소문자를 무시하여 패턴을 매칭합니다.
  8. [NE] (No Escape): 특수 문자를 이스케이프하지 않고 그대로 사용합니다.
  9. [P] (Proxy): 프록시 요청을 보냅니다.
  10. [END]: Apache 2.4 이상에서 사용 가능하며, 현재 규칙 이후에 다른 모든 규칙을 무시하고 종료합니다.
728x90
반응형