시작하기
이 페이지에서는 Redirect Web 앱에서 규칙을 만드는 일반적인 사용 사례를 설명합니다.
(규칙 설정에 대한 자세한 내용은 규칙 설정 페이지에서 확인할 수 있습니다.)
사례 1: 다른 웹사이트 열기
Twitter에 중독되어 실수로 Twitter를 열 때마다 Insight Timer에서 명상하기로 결정했다고 가정해 봅시다. 이를 위한 규칙을 만들어 봅시다!
1단계. "리디렉션 시작" 설정
먼저 앱의 규칙 편집 화면에서 리디렉션 시작 섹션을 설정해야 합니다. 대상은 https://twitter.com/
으로 시작하는 URL입니다.
이 경우 와일드카드 모드에서 다음 패턴을 지정할 수 있습니다:
https://twitter.com/*
와일드카드 모드에서 *
는 모든 것(=0개 이상의 문자)과 일치함을 의미합니다.
하지만 잠깐. twitter.com
은 x.com
으로 이름이 변경되었습니다. twitter.com
을 x.com
으로 간단히 바꿀 수 있지만, 새 소유자가 언제 다시 마음을 바꿔 되돌릴지 아무도 모릅니다. 따라서 twitter.com
과 x.com
을 모두 대상으로 합시다.
그렇게 하려면 와일드카드에서 정규 표현식으로 전환하고 다음을 패턴으로 설정합니다:
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
이제 Redirect Web은 Twitter에 접속할 때 명상으로 이동시켜 줍니다!
사례 2: URL에서 쿼리 매개변수 제거
example.com
의 URL에 source=twitter
라는 쿼리 매개변수가 있고, 자신을 익명화하기 위해 이를 제거하기로 결정했다고 가정해 봅시다.
이 경우 캡처 그룹 처리 옵션이 가장 쉬운 방법입니다.:
- 리디렉션 시작:
https://example.com/*
(와일드카드) - 리디렉션 대상:
$0
- 캡처 그룹 처리:
- 그룹:
$0
- 처리: 발생 횟수 바꾸기
- 대상:
&?source=[^&]*
- 바꾸기: (없음)
- 텍스트 패턴: 정규 표현식
- 대상:
- 그룹:
이 규칙은 다음과 같이 작동합니다:
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
을 자동으로 추가하는 규칙을 만들어 봅시다.
다음과 같이 정의할 수 있다고 생각할 수 있습니다:
- 리디렉션 시작:
https://example.com/.*
(정규 표현식) - 리디렉션 대상:
$0?layout=desktop
$0
은 대상 URL을 참조합니다. example.com/hello
에 액세스하려고 하면 example.com/hello?layout=desktop
으로 리디렉션됩니다. 이 기능을 대체라고 합니다.
와일드카드 모드에서도 내부적으로 정규 표현식으로 변환되므로 대체 기능을 사용할 수 있습니다.
그러나 이러한 설정에는 몇 가지 문제가 있습니다.
문제 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에 ?
가 두 개 있습니다). 그러나 매개변수는 &
로만 연결할 수 있습니다. 특수 문자로서의 ?
는 매개변수 시작 부분에만 허용됩니다. 따라서 유효한 매개변수로 처리되지 않습니다.
이 경우 설정을 다음과 같이 변경합니다:
- 리디렉션 시작:
(https://example.com/[^?]*)(\?(.*))?
- 리디렉션 대상:
$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 끝에 불필요한 &
를 포함합니다. 일반적으로 큰 문제는 아니지만, 제거하려면 캡처 그룹 처리를 사용할 수 있습니다.
결론적으로 최종 출력은 다음과 같습니다:
- 리디렉션 시작:
(https://example.com/[^?]*)((\?(.*))?)
(정규 표현식) - 리디렉션 대상:
$1?layout=desktop$3
- 제외된 URL 패턴:
.*[&?]layout=[^&]*.*
(정규 표현식) - 캡처 그룹 처리:
- 그룹:
$3
- 처리: 발생 횟수 바꾸기
- 대상:
\?(.*)
- 바꾸기:
&$1
- 대상:
- 그룹:
이것은 단지 예시일 뿐입니다. 각 문제를 처리하기 위해 여러 규칙을 만들 수도 있습니다. 훨씬 간단할 수 있습니다.