알림 이메일로 전송될 때, 직접 링크는 올바르게 표시되지만 iframe은 잘못된 URL을 가진 링크로 대체됩니다: https://player.vimeo.com/video/508864124?h=fcbbcc92fa 대신 https://vimeo.com/508864124?h=fcbbcc92fa
더 나쁜 것은, 임베드 URL에 (유효한) 끝에 슬래시를 추가하면 이메일에서 비디오 ID가 제거됩니다: <iframe src="https://player.vimeo.com/video/508864124/?h=fcbbcc92fa" ...></iframe>가 https://vimeo.com/?h=fcbbcc92fa가 됩니다.
iframe-to-URL 변환을 완전히 우회하는 방법이 있을까요? 투표와 이미 하고 있는 것처럼 "여기를 클릭하여 투표를 확인하세요"라고 표시되는 것과 같은 방식으로요
네. 당신이 한 정규식 변경 덕분에 iframe src URL(https://player.vimeo.com/video/508864124?h=fcbbcc92fa)을 인식할 수 있게 되어 더 이상 문제가 되지 않습니다. 문제는 전송되는 이메일에 있습니다.
일반적인 URL(https://vimeo.com/508864124/fcbbcc92fa)을 붙여넣으면 문제가 없습니다. iframe src(https://player.vimeo.com/video/508864124?h=fcbbcc92fa)인 경우에만 문제가 발생합니다.
현재 그렇게 작동하고 있습니다.
네. 현재 iframe src(https://player.vimeo.com/video/508864124?h=fcbbcc92fa)는 https://vimeo.com/508864124/fcbbcc92fa가 아니라 https://vimeo.com/508864124?h=fcbbcc92fa로 변환되고 있습니다.
즉, 현재 일어나고 있는 일은 다음과 같습니다. 원본 iframe 코드를 붙여넣으면 onebox 코드를 우회할 수 있고, 이 우회가 성공하면 결과 iframe 코드에 data-original-href가 포함되지 않습니다. 이 속성은 이메일 템플릿에서 사용되는 링크입니다.
data-original-href가 없으면 Discourse는 비디오가 무엇인지 추측하려고 하는데, 이는 마지막 / 뒤에 있는 값을 사용하는 방식이며, 당연히 비공개(unlisted) 비디오의 경우를 처리하지 못합니다.
예를 들어 브라우저의 개발자 도구/요소 검사를 확인해 보면, 원본 iframe 코드를 사용할 때의 결과 iframe은 다음과 같습니다:
두 번째 출력에서 추가된 data-original-href="https://vimeo.com/508864124/fcbbcc92fa" 속성을 주목해 보세요. 원본 iframe을 사용할 때 이 속성이 있으면 작동할 것 같지만, 실제로는 작동하지 않습니다. 아마도 Discourse가 원하는 속성을 자유롭게 추가할 수 없기 때문일 것입니다.
해결책을 제안할 수 있을 것 같습니다. 비디오가 목록에 공개되어 있는 경우에도 작동하도록 보장하면서, 이 과정에서 Vimeo의 일반적인 동작 방식을 발견했습니다. 일반적으로 공개된 모든 비디오는 vimeo.com/{id} 패턴을 따르지만, 슬래시를 추가하여 vimeo.com/{id}/anything 형태로 작성해도 정상적으로 작동합니다.
다음 예시를 고려해 보세요:
https://vimeo.com/767548129/estgsetgset
https://vimeo.com/767548129/hey-discurse
https://vimeo.com/767548129표준 형태
위 URL들은 모두 동일한 비디오로 연결되므로, 수정 방법은 iframe src에서 URL을 생성할 때 vimeo.com/{첫 번째 슬래시 이후의 값}/{h= 파라미터 이후의 값} 형태로 구성하는 것입니다. 이렇게 하면 두 가지 경우 모두에서 정상적으로 작동할 것입니다.