시작하기
이 페이지에서는 Redirect Web 앱에서 규칙을 만드는 일반적인 사용 사례를 설명합니다.
(규칙 설정에 대한 자세한 내용은 규칙 설정 페이지에서도 확인할 수 있습니다.)
사례 1: 다른 웹사이트 열기
Twitter에 중독되어 실수로 Twitter를 열 때마다 Insight Timer에서 명상을 하기로 결정했다고 가정해 봅시다. 이를 위한 규칙을 만들어 보겠습니다!
1단계. "리디렉션 시작" 설정
먼저 앱의 규칙 편집 화면에서 리디렉션 시작(Redirect From) 섹션을 설정해야 합니다. 대상은 https://twitter.com/
으로 시작하는 URL입니다.
이 경우 와일드카드(Wildcard) 모드를 사용하여 다음 패턴을 지정할 수 있습니다.
https://twitter.com/*
와일드카드 모드에서 *
는 모든 것(즉, 0개 이상의 문자)과 일치함을 의미합니다.
하지만 잠깐. twitter.com
이 x.com
으로 이름이 바뀌었습니다. 단순히 twitter.com
을 x.com
으로 대체할 수 있지만, 새 소유주가 언제 마음을 바꿔 다시 롤백할지 아무도 모릅니다. 따라서 twitter.com
과 x.com
모두를 대상으로 해봅시다.
이를 위해 와일드카드에서 정규 표현식(Regular Expression)으로 전환하고, 이를 패턴으로 설정합니다.
https://(twitter|x).com/.*
(twitter|x)
:twitter
와x
모두를 대상으로 합니다. (|
는 파이프라고 불립니다.).*
: 와일드카드의*
와 같습니다. 더 구체적으로,.
는 모든 문자를 의미하고*
는 이 기호 앞에 있는 모든 것이 여러 번 반복됨을 의미하여, 결과적으로 모든 것과 일치합니다.
정규 표현식은 조금 복잡하지만, 익숙해지면 강력한 도구가 될 것입니다. RegExr을 사용하여 정규 표현식 패턴이 어떻게 작동하는지 분석하는 연습장을 사용하는 것을 추천합니다.
정규 표현식에서 (twitter|x).com
의 .
도 모든 문자로 처리됩니다. 따라서 (twitter|x).com/.*
는 예를 들어 twitter1com/
또는 x_com/
과도 일치합니다.
이를 피하려면 (twitter|x)\.com/.*
로 변경할 수 있습니다. \
는 특수 문자를 이스케이프하는 데 사용됩니다.
하지만 일반적인 인터넷 환경에는 그런 URL이 없습니다. 따라서 원한다면 .
을 특수 문자로 남겨둘 수 있습니다. 규칙은 자신을 위한 것이므로, 적절하다고 생각하는 대로 구현하세요.
2단계: "리디렉션 대상" 설정
단순히 URL을 다음과 같이 지정합니다.
https://insighttimer.com/saraauster/guided-meditations/calm
이제 Twitter에 접속하면 Redirect Web이 명상으로 안내합니다!
사례 2: URL에서 쿼리 매개변수 제거
example.com
URL에 source=twitter
쿼리 매개변수가 있고, 자신을 익명화하기 위해 이를 제거하기로 결정했다고 가정해 봅시다.
이 경우 캡처 그룹 처리(Capturing Group Processing) 옵션이 가장 쉬운 방법입니다.
- 리디렉션 시작(Redirect From):
https://example.com/*
(와일드카드) - 리디렉션 대상(Redirect To):
$0
- 캡처 그룹 처리(Capturing Group Processing):
- 그룹(Group):
$0
- 처리(Process): 일치 항목 교체(Replace Occurrences)
- 대상(Target):
&?source=[^&]*
- 교체(Replacement): (없음)
- 텍스트 패턴(Text Pattern): 정규 표현식(Regular Expression)
- 대상(Target):
- 그룹(Group):
이 규칙은 다음과 같이 작동합니다.
https://example.com/?source=twitter
↪ https://example.com/?
https://example.com/?hello=world&source=twitter&foo=bar
↪ https://example.com/?hello=world&foo=bar
더 많은 매개변수를 제거하려면 더 많은 처리를 추가하세요.
사례 3: URL에 쿼리 매개변수 추가
example.com
이라는 웹사이트가 기본적으로 모바일 레이아웃을 표시하지만, 데스크톱 레이아웃을 선호한다고 가정해 봅시다. 다행히 이 웹사이트는 layout
쿼리 매개변수를 지원하여 웹사이트가 표시할 레이아웃을 지정할 수 있습니다. layout=desktop
을 자동으로 추가하는 규칙을 만들어 봅시다.
아마 다음과 같이 정의할 수 있다고 생각할 것입니다.
- 리디렉션 시작(Redirect From):
https://example.com/.*
(정규 표현식) - 리디렉션 대상(Redirect To):
$0?layout=desktop
$0
은 대상 URL을 참조합니다. example.com/hello
에 접속하려고 하면 example.com/hello?layout=desktop
으로 리디렉션됩니다. 이 기능을 *치환(substitution)*이라고 합니다.
와일드카드 모드에서도 치환을 사용할 수 있습니다. 내부적으로 정규 표현식으로 변환되기 때문입니다.
하지만 이 설정에는 몇 가지 문제가 있습니다.
문제 1: 무한 루프
현재 설정은 https://example.com/.*
가 https://example.com/hello?layout=desktop
도 대상으로 하기 때문에 무한 리디렉션 루프를 생성합니다.
이 경우 정규 표현식으로 다음과 같이 리디렉션 없이 접속할 수 있도록 제외할 URL 패턴을 지정할 수 있습니다.
.*[&?]layout=[^&]*.*
.*
: 모든 것과 일치[&?]
:&
또는?
와 일치[^&]*
:&
를 제외한 모든 것과 일치
문제 2: 기존 매개변수를 제대로 처리할 수 없음
대상 URL에 이미 example.com/hello?theme=dark
와 같은 다른 쿼리 매개변수가 있는 경우, 대상은 example.com/hello?theme=dark?layout=desktop
이 됩니다 (URL에 ?
가 두 개 있습니다). 하지만 매개변수는 &
로만 연결할 수 있습니다. ?
는 특수 문자로서 매개변수의 시작 부분에만 허용됩니다. 따라서 유효한 매개변수로 처리되지 않습니다.
이 경우 설정을 다음과 같이 변경합니다.
- 리디렉션 시작(Redirect From):
(https://example.com/[^?]*)(\?(.*))?
- 리디렉션 대상(Redirect To):
$1?layout=desktop&$3
단계별로 살펴보겠습니다.
(https://example.com/[^?]*)
:?
의 이전 문자까지의 부분과 일치합니다.[^?]*
는?
를 제외한 모든 것과 일치합니다.- 이는
()
로 묶여 나중에$1
로 참조할 수 있습니다.
(\?(.*))?
: 쿼리 매개변수를 의미하는?
로 시작하는 문자열과 일치합니다.- 이 패턴 끝의
?
한정자(0번 또는 1번 일치
)에 의해 빈 문자열과도 일치합니다. - 바깥쪽
()
와 안쪽()
는 나중에$2
와$3
으로 참조할 수 있습니다.
- 이 패턴 끝의
RegExr이 자세한 내용을 이해하는 데 도움이 될 수 있습니다.
RegExr은 /
를 \
로 이스케이프하지 않으면 오류를 표시합니다. 이스케이프할 수 있지만, Redirect Web은 이스케이프가 필요 없는 Apple의 다른 엔진을 사용하므로 필수는 아닙니다.
이것은 완벽한 해결책이 아닙니다. example.com/hello
를 example.com/hello?layout=desktop&
으로 리디렉션하여 URL 끝에 불필요한 &
가 포함되기 때문입니다. 일반적으로 큰 문제는 아니지만, 제거하려면 *캡처 그룹 처리(Capturing Group Processing)*를 사용할 수 있습니다.
결론적으로 최종 결과는 다음과 같습니다.
- 리디렉션 시작(Redirect From):
(https://example.com/[^?]*)((\?(.*))?)
(정규 표현식) - 리디렉션 대상(Redirect To):
$1?layout=desktop$3
- 제외할 URL 패턴(Excluded URL Pattern):
.*[&?]layout=[^&]*.*
(정규 표현식) - 캡처 그룹 처리(Capturing Group Processing):
- 그룹(Group):
$3
- 처리(Process): 일치 항목 교체(Replace Occurrences)
- 대상(Target):
\?(.*)
- 교체(Replacement):
&$1
- 대상(Target):
- 그룹(Group):
이것은 단지 예시일 뿐입니다. 각 문제를 처리하기 위해 여러 규칙을 만들 수도 있습니다. 그렇게 하면 훨씬 간단해질 수 있습니다.