htaccess를 사용하여 URL을 앱별 딥 링크로 리디렉션

Jul 27 2020

다음을 시도하고 있습니다.

사용자가 검색어 매개 변수를 사용하여 URL을 방문합니다. http://www.example.com/?invite=1234

그런 다음 iOS 기기의 앱에 딥 링크되기를 원하므로 다음으로 이동합니다. app_name://1234

.htaccess파일 에서이 작업을 수행하는 방법에 대한 제안이 있습니까?

나는 이것을 시도했지만 작동하지 않습니다.

RewriteEngine On # Turn on the rewriting engine

RewriteRule ^invite/(.*)/$ app_name://$1 [NC,L]

경우 RewriteRule작업, 캔 사람이 나에게 예제 코드를 전송하지 않습니다 RewriteCond내가 원하는 것을 달성하기 위해 또는 자바 스크립트?

답변

MrWhite Jul 28 2020 at 00:18

이것이 iOS 기기에서 어떻게 작동하는지 확실하지 않지만 어쨌든 ...

RewriteRule ^invite/(.*)/$ app_name://$1 [NC,L]

주어진 URL과 일치하지 않습니다. 이는 양식의 요청 된 URL과 일치합니다 example.com/invite/1234/. 그러나 일치하는 항목 도 있습니다. 예제 URL에는 숫자 만 포함됩니다.

RewriteRule 패턴 의 URL 경로에 대한 일치하는 경우에만, 당신은 사용할 필요가 RewriteCond쿼리 문자열과 일치하기 위해 지시를. 따라서 일치하려면 example.com/?invite=1234(URL 경로가 비어 있음) 대신 다음과 같은 작업을 수행해야합니다.

RewriteCond %{QUERY_STRING} ^invite=([^&]+)
RewriteRule ^$ app_name://%1 [R,L]

%1역 참조 다시 마지막 일치를 의미 CondPattern .

또한 invite매개 변수 값을 1 자 이상으로 제한했습니다. 아니면 빈 매개 변수 값을 허용 하시겠습니까? 값이 숫자 만 가능하면 패턴을 숫자로만 제한해야합니다. 예. ^invite=(\d+).

나는 R플래그를 포함 시켰습니다-이것이 전혀 작동한다면 이것은 외부 리디렉션이어야하기 때문입니다.

그러나 Apache가 app_name프로토콜을 인식하지 않으면 전혀 작동하지 않을 수 있습니다 . 그렇지 않은 경우 단순히 상대 URL 로 표시되어 잘못된 리디렉션이 발생합니다.