Li o seguinte e tento aplicar esse esquema ao meu site executando o WordPress: http://code.google.com/intl/fr-CA/web/ajaxcrawling/index.html
Se você visitar meu site em http://www.visualise.ca/ , verá que ele carrega as postagens na página inicial e o URL se torna http://visualise.ca/#!/anne-au-cherry quando esse a postagem está carregada. Uma versão estática do mesmo conteúdo está disponível para o rastreador em http://visualise.ca/anne-au-cherry, mas se um visitante usando um navegador o visitar, ele será redirecionado para http://visualise.ca/#! / anne-au-cherry (isso é feito com javascript).
Para fornecer ao rastreador o necessário ?_escaped_fragment_=
, usei um hack do WordPress que encontrei na rede: http://www.wordpress-fr.net/support/sujet-54810-add-action-parse-request e agora o O GoogleBot pode ver o conteúdo das minhas páginas com AJAX. Eu pensei que estava tudo pronto.
Mas quando colo um link de postagem no Facebook (ou seja), ele não consegue ler o conteúdo da página, então acho que meu site não está realmente respeitando o esquema descrito na documentação do Google, pois o Facebook o suporta (se você colar http : //twitter.com/#! / gablabelle funcionará). Então, como estou usando o plugin jQuery.address para obter meu hashbang (#!), Fui ao site deles e baixei seus arquivos de amostra para ver quais eram as diferenças entre os arquivos deles e os meus e percebi que eles provavelmente estavam usando uma função php para criar os instantâneos HTML necessários: https://github.com/bartaz/jquery-address/blob/master/samples/crawling/index.php, porque é por isso que, acho, o Facebook não consegue ler os meus.
<?php
error_reporting(E_ALL ^ (E_NOTICE | E_WARNING));
$fragment = $_REQUEST['_escaped_fragment_'];
$file = 'data/' . (isset($fragment) && $fragment != '' && $fragment != '/' ? preg_replace('/\//', '', $fragment) : 'home') . '.xml';
$re = '/(^<[^>]*>)|(\n|\r\n|\t|\s{2,4})*/';
$handle = fopen($file, 'r');
if ($handle != false) {
$content = preg_replace($re, '', fread($handle, filesize($file)));
fclose($handle);
} else {
$content = 'Page not found!';
header(php_sapi_name() == 'cgi' ? 'Status: 404' : 'HTTP/1.1 404');
}
?>
Então, meu palpite é que eu poderia usar uma função php semelhante para exibir os instantâneos HTML em vez de usar o hack do WordPress, mas precisaria adaptá-lo ao WordPress. O problema é que não sou programador e fiz o meu melhor até agora.
Minha postagem está neste formato: http://visualise.ca/#!/anne-au-cherry e a versão estática está disponível em http://visualise.ca/anne-au-cherry (Onde anne-au-cherry é a lesma da postagem e muda de acordo com a página que estamos visualizando).
Então, minha pergunta é: alguém poderia confirmar que estou no caminho certo e, se possível, também ajudar a criar essa função php?
Muito obrigado pelo seu tempo e ajuda!
Respostas:
EVITE, especificamente, o uso de "hashbang" ("! #") Para tornar rastreáveis os sites WordPress com AJAX.
Você realmente não deseja usar o método "hashbang" em um site WordPress.
O "! #" É mais como um patch hacky para sites que não podem fornecer um analógico estático para sua versão do AJAX. Seu uso em geral não é recomendado pelo Google, a menos que nenhuma alternativa esteja disponível.
Não há benefício em implementar um sistema hashbang no WordPress. Uma solução AJAX front-end para WordPress deve contornar o esquema de URL existente (sem hash, sem estrondo).
Resumo: o WordPress é naturalmente rastreável; simplesmente não o quebre usando hash-bangs.
fonte
Se você está se referindo especificamente ao Facebook que não mostra corretamente as meta informações da sua página, deve procurar o plugin OpenGraph para WordPress, pois ele adicionará os metadados og: attribute apropriados. http://wordpress.org/extend/plugins/opengraph/
Além disso, você pode adicionar um link como este no cabeçalho
E veja se isso faz alguma coisa.
Eu tenho que perguntar, por que você está fazendo isso? O Twitter sofreu grandes críticas por essa estrutura de URL justamente porque é difícil rastrear. Não estou dizendo que você não deveria fazer isso, mas bastante curioso sobre qual é o motivo :)
fonte
O que eu fiz na verdade é não usar hashbangs como sugerido pelo WraithKenny.
Usando o plug-in de endereço jQuery com o método $ .address.state (value) para definir o caminho base do site que é utilizado no gerenciamento de estado HTML5 e o método $ .address.value (value) para definir o atual valor de ligação profunda, fui capaz de fazer o que desejava.
http://visualise.ca/
As postagens (clique na miniatura da imagem) são carregadas via AJAX e o URL muda ao mesmo tempo; as postagens existem por conta própria, usando, é claro, a mesma estrutura de permalink, para que seja totalmente rastreável.
O único problema será para navegadores mais antigos que, acredito (precisam ser verificados), ainda verão os hashbangs.
Como não sou desenvolvedor, levei muito tempo para entender. : - / Mas estou muito feliz com os resultados agora ;-)
Endereço jQuery: http://www.asual.com/jquery/address/
fonte