해시방 URL로 페이스북 공유/좋아요를 처리하는 방법은 무엇입니까?
저는 홈페이지에서 웹사이트의 다른 URI를 라이트박스(AJAX)로 열 웹사이트를 구축하고 있으며, HTML5 푸시 상태와 해시 뱅을 상태 변화를 관리하기 위한 폴백으로 사용하고 싶습니다.
이제 URL을 탐색할 수 있고 Facebook을 공유/좋아요할 수 있기를 원합니다.
사용자 브라우저가 HTML5 푸시 상태를 지원하는 경우 문제 없이 URL을 공유할 수 있습니다(예:http://myserver/example
) 그리고 Facebook은 정적 콘텐츠에서 적절한 OG 메타를 찾을 것입니다.
하지만 사용자가 HTML4 브라우저를 사용한다면, 그는 다음과 같은 URL을 갖게 될 것입니다.http://myserver/#!/example
어쨌든 그가 페이스북을 통해 공유할 수 있기를 바랍니다.
이제 페이스북이 _escape_fragment_ 대체 방법을 지원하는 것처럼 보여서, 저는 단순히 요청을 리디렉션하고 싶습니다.http://myserver/?_escaped_fragment_=/example
로.http://myserver/example
그리고 모두가 행복해야 합니다.
그래서 저는 제 htaccess에 다시 쓰기 조건을 추가했습니다.
RewriteCond %{QUERY_STRING} ^_escaped_fragment_=([^&]*)
RewriteRule .* http://%{HTTP_HOST}/%1? [R=301,L,NE]
제 문제는 페이스북에서 작동할 수 없도록 만들 수 없다는 것입니다. 페이스북 링터를 사용하면 해시방 이후 URL 부분이 항상 백분율로 빠져나가는 것처럼 보여서 다음과 같은 URL이 발생합니다.http://myserver/%2Fexample
404에 도달하는 것 :-(
페이스북을 속여서 URL의 이 부분을 벗어나지 못하게 하는 방법을 아는 사람이 있습니까? 제가 apache mod_rewrite 쪽에서 뭔가를 할 수 있을까요?
저는 또한 다른 유효한 아약스 크롤링 가능/좋아요 URL 전략에도 개방적입니다;)
저는 http://facebook.stackoverflow.com/questions/8896773/opengraph-on-ajax-based-website 의 답변이 어떻게 이것을 실현할 수 있는지에 대한 정말 좋은 조언을 제공한다고 생각합니다.
내용은 다음과 같습니다.
아니요. 오픈 그래프 마크업은 순수 HTTP로 GET 가능한 HTML 페이지에 존재해야 합니다.
이는 사용자가 OG 개체(예: 작업 수행 등)와 상호 작용할 때 Facebook이 OG URL에서 HTTP GET을 수행하고 마크업에서 OG 태그가 반환되는 것을 예상하기 때문입니다.
솔루션은 각 개체에 대한 표준 URL을 만드는 것입니다.이러한 URL에는 OG 태그를 포함한 기본 HTML 마크업이 포함되어 있습니다.
이러한 URL에 대한 요청 시 'facebook externalhit'이 포함된 수신 사용자 에이전트 문자열을 보면 HTML을 렌더링합니다. 그렇지 않으면 Ajax URL로 리디렉션되는 302를 제공합니다. Ajax URL에서 좋아요 버튼과 게시하는 모든 OG 작업은 표준 URL 개체를 가리켜야 합니다.
예:
사용자로서, 저는 http://yoursite.com/ #!/http/https에 있습니다.좋아요 버튼을 클릭하거나 작업을 게시하지만, 작업을 게시할 때 좋아요 버튼의 href 매개 변수 또는 개체의 URL은 해당 개체에 대한 웹 히트 가능한 표준 URL이어야 합니다(이 경우에는 http://yoursite.com/artists/monet ).
브라우저를 사용하는 사용자가 http://yoursite.com/artists/monet 을 누르면 http://yoursite.com/ #!/facebook/facebook으로 리디렉션해야 하지만, 들어오는 사용자 에이전트가 Facebook의 스크레이퍼라고 말하면 아티스트 모네를 나타내는 마크업만 반환합니다.
실제 사례는 Deezer, Rdio 및 Mog를 참조하십시오. 이들은 모두 이 디자인 패턴을 사용합니다.
저는 완벽하게 작동하는 php 헤더 리다이렉트를 사용했습니다.
if(isset($_GET['_escaped_fragment_'])) {
Header( "HTTP/1.1 301 Moved Permanently" );
header('Location: http://'.$_SERVER['HTTP_HOST'].$_GET['_escaped_fragment_']);
die();
}
htaccess rewrite 조건으로 할 때 왜 이스케이프 문자가 나오는지 모르겠습니다.
다음 구문을 사용하면 페이스북에서 해시방 URL을 공유할 수 있습니다. https://stackoverflow.com/a/6138879/372838
언급URL : https://stackoverflow.com/questions/8893288/how-to-handle-facebook-sharing-like-with-hashbang-urls
'programing' 카테고리의 다른 글
클래스 조각을 부풀리는 중 오류 발생 (0) | 2023.09.01 |
---|---|
MariaDB 데이터베이스에 대한 쿼리 동기화 (0) | 2023.09.01 |
기본 키의 MySQL/MariaDB 느린 업데이트 (0) | 2023.09.01 |
이미지를 이미지 보기에 맞추고 가로 세로 비율을 유지한 다음 이미지 보기 크기를 이미지 크기에 맞게 조정하시겠습니까? (0) | 2023.09.01 |
UI 스택 보기 보기 숨기기 애니메이션 (0) | 2023.09.01 |