Domanda

Sto costruendo un sito web dove dalla home page mi si apre qualche altro URI sul sito web in un lightbox (AJAX), e voglio utilizzare HTML5 push stato e di hash scoppi come una soluzione di ripiego, di gestire i cambiamenti di stati.

Ora voglio la url per essere semplice e Facebook shareable/simpatico..

Se il tuo browser supporta HTML5 push stato, nessun problema, si può condividere l'URL (ad esempio : http://myserver/example ) e Facebook verrà a trovare OG metas nel contenuto statico.

Ma se l'utente utilizza un HTML4 browser, avrà un url del tipo http://myserver/#!/example.e voglio che lui sia in grado di condividere attraverso facebook comunque...

Ora sembra che Facebook supporta _escaped_fragment_ metodo di sostituzione, così ho pensato semplicemente reindirizzare le richieste da http://myserver/?_escaped_fragment_=/example per http://myserver/example e tutti dovrebbero essere felici...

Così ho aggiunto una riscrittura condizione per il mio htaccess :

RewriteCond %{QUERY_STRING} ^_escaped_fragment_=([^&]*)
RewriteRule .* http://%{HTTP_HOST}/%1? [R=301,L,NE]

Il mio problema è che non riesco a farlo funzionare con Facebook, con Facebook linter sembra per cento-fuga per tutto il tempo la parte dell'URL dopo il hashbang, con conseguente url del tipo http://myserver/%2Fexample che approda ad un 404 :-(

Qualcuno sa come ingannare Facebook in uscita da questa parte dell'URL ?Posso fare qualcosa di apache mod_rewrite lato ?

Anche io sono aperto a qualsiasi altro valido disponibile per la scansione ajax/simpatico URL strategia ;)

È stato utile?

Soluzione 2

ho finito utilizzando php header (), redirect, che funziona perfettamente :

if(isset($_GET['_escaped_fragment_'])) {
    Header( "HTTP/1.1 301 Moved Permanently" );
    header('Location: http://'.$_SERVER['HTTP_HOST'].$_GET['_escaped_fragment_']);
    die();
}

Non so perché ho avuto i caratteri di escape quando farlo con l'htaccess rewrite condizione.

Altri suggerimenti

Penso che la risposta a http://facebook.stackoverflow.com/questions/8896773/opengraph-on-ajax-based-website fornisce alcuni buoni consigli su come rendere questo accada.

Ecco il contenuto:


No.Open Graph markup deve essere presente sulle pagine HTML, che sono GETable con pura HTTP.

Questo perché quando un utente interagisce con un OG oggetto (come, esegue un'azione, ecc) Facebook eseguirà un HTTP GET sul OG URL, e si aspettano di vedere OG tag restituito nel markup.

La soluzione è creare canonical Url per ciascuno dei tuoi oggetti.Questi Url contengono base di markup HTML, compresi OG tag.

In merito alle richieste di questi Url, se si vede l'arrivo di una useragent stringa contenente 'facebookexternalhit' poi il rendering HTML.Se non, si servono di un 302 che reindirizza al tuo URL ajax.La Url ajax, proprio come bottoni e qualsiasi OG azioni si pubblica dovrebbe scegliere l'URL canonico oggetto

Esempio:

Come utente, ci sono anche io http://yoursite.com/#!/artisti/monet.Faccio clic su un pulsante "mi piace", o pubblicare un'azione, ma il pulsante "mi piace" del href parametro, o l'URL dell'oggetto quando si registra l'azione deve essere un web hittable URL canonico per l'oggetto - in questo caso, forse http://yoursite.com/artists/monet

Quando un utente utilizza un browser hits http://yoursite.com/artists/monet si dovrebbe reindirizzare a http://yoursite.com/#!/artisti/monet, ma se l'arrivo di useragent dice che è Facebook del raschietto, è solo il ritorno di markup che rappresenta l'artista Monet.

Per esempi reali, vedere Deezer, Rdio e Mog che utilizzano questo modello di progettazione.

Se si utilizza la seguente sintassi è possibile condividere hashbang url su facebook: https://stackoverflow.com/a/6138879/372838

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top