Matchnutí pozice (#) v dokumentu Facebook botem
- maarlin
- Člen | 207
Mám na stránce pár odkazů přímo s pozicí – např.
/stats/342343/4-months#skip-navigation
Routa vypadá následovně:
$router[] = new NRoute('stats/<code>[/<interval>]', array(
'presenter' => 'Countries',
'action' => 'detail'
));
Vše funguje očekávaně, při návštěvě klasického prohlížeče, tedy
interval
se matchne jako 4-months
.
Ovšem v případě, kdy Facebookový bot
{facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)
}
prochází stránku kvůli získání náhledu při sdílení odkazu, tak se
matchne interval
jako 4-months#skip-navigation
.
Nechápu proč se tak děje.
Zkoušel jsem i určit pravidla pro interval –
<interval [^\#]>
, stejný výsledek.
Editoval maarlin (26. 10. 2010 17:31)
- maarlin
- Člen | 207
Mikulas Dite napsal(a):
Facebook pravděpodobně získá hash jako
%3A
místo#
.
Souhlasím, taky mě to napadlo, tohle Facebook nedělá úplně dobře, ale
dá se to nějak odfiltrovat v routě explicitně? Třeba ideálně určit
nějaké pravidlo pro všechny proměnné – tuším že už tam nějaké
defaultní je – třeba že to nežere lomítka atp. a tohle pravidlo
uplatňovat jen v případě návštěvy botem…
Prostě (hodnota-promenne)%3A.* → mělo by se získat jen hodnota
proměnné.
Edit: Tady si evidentně někdo stěžuje na úplně
opačný problém:
http://efreedom.com/…er-Sharerphp
Editoval maarlin (26. 10. 2010 17:38)
- Mikulas Dite
- Člen | 756
Zkusil bych napsat jednouduchou debug akci, která vrátí požadavek – na ověření, jestli je to opravdu escapované, nebo ne. Pokud ano, bylo by lepší prozkoumat, v čem je problém (protože fb to normálně nedělá). Nastavovat na to routu bych bral až jako úplně poslední možnost.
- maarlin
- Člen | 207
Tak já v zásadě získávám tuhle informace z podrobných výpisů Laděnky, máš dojem že se dá získat ještě něco podrobnějšího, jak ověřit, že to je #, jeho encoded-alternativa, popř. něco jiného?
Spíše mě teď dost překvapilo při podrobnějším zkoumání, že se ten
parametr (ve správném tvaru) dostal do samotného $_GET
u…
- Mikulas Dite
- Člen | 756
Laděnka snad stačí, akorát si nejsem na 100 % jistý, jestli by ve výstupu escapované znaky nepřevedla.
Zítra to zkusím, zajímalo by mě, co se s linkem dělo, že v get nejsou i ostatní parametry.
- Mikulas Dite
- Člen | 756
Podle té první routy se do GET nic dostat nemůže. Pošli i ostatní, problém bude tam.