Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Videres

Páginas em Ajax rastreáveis pelo Google?

Recommended Posts

Bom dia pessoas!

 

Estou quebrando a cabeça pra conseguir deixar as paginas do meu site rastreáveis pelo google... Alguém sabe como posso fazer isso? ^^

 

O meu código esta assim:

 

 

Instrução.js

function extraiScript(texto){
       


        var ini = 0;
        
        while (ini!=-1){
               
                ini = texto.indexOf('<script', ini);
            
                if (ini >=0){


                        // define o inicio para depois do fechamento dessa tag
                        ini = texto.indexOf('>', ini) + 1;
                        // procura o final do script
                        var fim = texto.indexOf('</script>', ini);
                        // extrai apenas o script
                        codigo = texto.substring(ini,fim);
                        // executa o script
                        eval(codigo);
                }
        }
startEditor();


}




function abrirPag(valor){
        var url = valor;


        xmlRequest.open("GET",url,true);

        xmlRequest.onreadystatechange = mudancaEstado;
        xmlRequest.send(null);





        return url;


}


function mudancaEstado(){
        if (xmlRequest.readyState == 4){
           texto=unescape(xmlRequest.responseText.replace(/\+/g," "));
           document.getElementById("corpo").innerHTML = xmlRequest.responseText;


extraiScript(texto);

        }

}



function id( el ){
        return document.getElementById( el );
}


function pega_arq( url2 ){


var file = url2.split('#');


return ( file[1] ) ? file[1] : 'php/home.php';
}

window.onhashchange = function() { 
loadPag();
}; 


function loadPag(){
        var as = document.getElementsByTagName('a');
        for( var i=0; i<as.length; i++ ){
                as[i].onclick = function(){
                        abrirPag( pega_arq( this.href ) );
                }
        }
        abrirPag( pega_arq( document.location.href ) );
}

 

 

Ajax.js

 

function GetXMLHttp() {if(window.XMLHttpRequest){
                return new XMLHttpRequest();
        }else if(window.ActiveXObject){
                var prefixes = ["MSXML2", "Microsoft", "MSXML", "MSXML3"];
                for(var i = 0; i < prefixes.length; i++){
                        try     {
                                return new ActiveXObject(prefixes[i] + ".XMLHTTP");
                        } catch (e) {}
                }
        }
}

var xmlRequest = GetXMLHttp();

Link das minhas paginas são assim: http://www.example.br/#php/pagina1.php

 

 

 

 

Encontrei algumas coisas na internet como esses artigo abaixo:

 

https://developers.google.com/webmasters/ajax-crawling/docs/getting-started?hl=sv-SE

 

E um outro q tinha achado, apresentou uma solução diferente q era relacionado a uma função do html 5... acabei perdendo por achar q n valia apena implementar por funcionar apenas nos "navegadores atualizados".

De qualquer forma todos q encontrei não consegui implementar no meu cod.. se alguém puder me dar uma luz serei eternamente grato... já estou perdendo meus neuronios restantes pra resolver ess trem. ssrsrrs

Vlws abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, o link que você postou é exatamente o que você precisa.

 

Seus links devem começar sempre da forma /#!

 

Quando o Google encontra um link deste tipo, como por exemplo: example.com.br/#!php/pagina1.php

Ele irá visitar o endereço: example.com.br/?_escaped_fragment_key=php/pagina1.php

 

O que você tem de fazer neste caso, é verificar se informaram o _escaped_fragment_key e se é um mecanismo de busca acessando a página. Caso sim, você redireciona o robo para uma página que gera o snapshot da sua página ajax. Não é uma solução apenas javascript.

 

Me parece que hoje tem mais recursos, pois a página está atualizada e indica mais ferramentas. Da uma olhada nas ferramentas indicadas lá como o crawljax.

 

Para testar você pode utilizar o Google Webmaster Tools, que possui uma área onde você passa um endereço e ele exibe o que o robô "viu" no seu endereço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, o link que você postou é exatamente o que você precisa.

 

Seus links devem começar sempre da forma /#!

 

Quando o Google encontra um link deste tipo, como por exemplo: example.com.br/#!php/pagina1.php

Ele irá visitar o endereço: example.com.br/?_escaped_fragment_key=php/pagina1.php

 

O que você tem de fazer neste caso, é verificar se informaram o _escaped_fragment_key e se é um mecanismo de busca acessando a página. Caso sim, você redireciona o robo para uma página que gera o snapshot da sua página ajax. Não é uma solução apenas javascript.

 

Me parece que hoje tem mais recursos, pois a página está atualizada e indica mais ferramentas. Da uma olhada nas ferramentas indicadas lá como o crawljax.

 

Para testar você pode utilizar o Google Webmaster Tools, que possui uma área onde você passa um endereço e ele exibe o que o robô "viu" no seu endereço.

 

 

A bronca é q estou com dificuldade de implementar... quando insiro a exclamação da erro na exibição da pag

Ex.:

 

 

//forma1 <a href="#!php/home.php" onclick="abrirPag('php/home.php')" >Principal</a>

 


//forma2 <a href="#php/home.php" onclick="abrirPag('#!php/home.php')" >Principal</a>

 

Qual seria a forma correta?

E como implemento o crawljax no meu cod? já rodei tentando e n tenho tido muito sucesso.

 

Já estou até com ele aqui.. mas n estou conseguindo implementar..

S puder me dar uma dica quanto isso... fico te devendo ate minha alma. hohohoh

 

Vlws pela força =D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu acredito que o correto seria a forma1.

 

Porém no seu código você também altera as funções de onclick, então teria de atualizar a sua função que retira o "#" do link para retirar o "#!".

 

Já sobre o Crawljax eu não sei pois nunca trabalhei com ele. Quando fiz isto utilizei o HTMLUnit. E não é uma solução que você implementa no seu código. Funciona como te disse: quando um robô visitar seu site, você redireciona ele para uma outra página que gera o snapshot da página que ele visitou.

 

Funciona +/- da seguinte forma (exemplo):

 

- Você tem sua página principal (index.php), que carrega todo conteúdo do seu site via ajax.

 

- Se um robô visita seu site, ele vai visitar a index.php, e você verifica pelo user agent se é um robô de busca. Aqui tem uma lista dos agents: http://www.user-agents.org/

 

- Se for um robô você redireciona ele para uma página do tipo snapshot.php

 

- Esta sua página utiliza um browser headless para acessar a index.php com os parametros passados, espera carregar o conteúdo ajax da página, e então pega o HTML completo dela e retorna.

 

O resultado seria algo do tipo, se o robô visitar example.com.br/#!php/pagina1.php ou example.com.br/?_escaped_fragment_key=php/pagina1.php, você exibe para ele a página example.com.br/snapshot.php?_escaped_fragment_key=php/pagina1.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu acredito que o correto seria a forma1.

 

Porém no seu código você também altera as funções de onclick, então teria de atualizar a sua função que retira o "#" do link para retirar o "#!".

 

Já sobre o Crawljax eu não sei pois nunca trabalhei com ele. Quando fiz isto utilizei o HTMLUnit. E não é uma solução que você implementa no seu código. Funciona como te disse: quando um robô visitar seu site, você redireciona ele para uma outra página que gera o snapshot da página que ele visitou.

 

Funciona +/- da seguinte forma (exemplo):

 

- Você tem sua página principal (index.php), que carrega todo conteúdo do seu site via ajax.

 

- Se um robô visita seu site, ele vai visitar a index.php, e você verifica pelo user agent se é um robô de busca. Aqui tem uma lista dos agents: http://www.user-agents.org/

 

- Se for um robô você redireciona ele para uma página do tipo snapshot.php

 

- Esta sua página utiliza um browser headless para acessar a index.php com os parametros passados, espera carregar o conteúdo ajax da página, e então pega o HTML completo dela e retorna.

 

O resultado seria algo do tipo, se o robô visitar example.com.br/#!php/pagina1.php ou example.com.br/?_escaped_fragment_key=php/pagina1.php, você exibe para ele a página example.com.br/snapshot.php?_escaped_fragment_key=php/pagina1.php

 

Antes d+ nada VLws Bruno... com certeza abriu mais a minha mente. =P

 

Mas.. tipo a parte conceitual eu encontro mto material... mas explicação do processo é que estou achando tenso, por exemplo:

 

Com sua ajuda consegui entender como passo as urls.. agora vem outra bronca!

 

Como crio uma pag snapshot.php? Ou utilizo o Crawljax ou HtmlUnit para redirecionar para uma outra página que gera o snapshot da página que ele visitou?

 

N estou conseguindo encontrar uma parte prática de como funciona no caso cod... estou entendo o conceito do que ambos fazem + como implementar? como inserir, como fazer funfar? T_T

 

Estou sentindo dificuldades em entender como a coisa é feita... só encontro coisas do tipo -> "isso é feito usando isso e aquilo"... quando pesquiso a respeito a principio n aparece nem um exemplo prático só conceito (talvez a minha falta de conhecimento n ajude mto) + tô chegando.. se puder me passar um material para entender ess trem melhor serei muito grato, se tivesse uma irmã ate ajeitaria pra você. ehheheh ^^

 

 

VLWS MESMO PELA FORÇA \o

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Opa cara,


Nesta página tem algumas instruções:



Percebo que você ainda não pegou exatamente o que é o HTMLUnit. Ele é um browser, sem a interface gráfica, feito em java.

No link acima tem algumas coisas sobre como integrar java com php.


No meu caso quando fiz, era em .Net, então vou postar partes de código .Net, mas que provavelmente vão ser quase iguais ao que você precisa.


1- Em primeiro lugar, na sua index.php, verifica se o user agent é um robot do google por exemplo. Se for, e ele tiver acessando a URL com o _escaped_fragment_key, você não vai renderizar a página normalmente, mas vai renderizar a snapshot.php

Em .Net seria algo do tipo


if(Request.Params["_escaped_fragment_"]!=null) {
Server.Transfer("htmlsnapshot.aspx", true);
}

O Server.Transfer já passa os parametros da URL pra frente e não faz redirect, apenas renderizando o conteúdo da página htmlsnapshot.aspx no lugar da atual.



2- Agora que mandou o robô pro lugar certo, você tem de exibir o snapshot pra ele. O código da snapshot.php seria algo do tipo (em .Net)


void Page_Load() {
//Esta é a função chamada quando a pagina carrega
//Forme o endereço para visitar
string url = serveraddress + "#!" + fragment;
//Pegue o html do snapshot
string html = getSnapShot(url);
//Escreva o html do snapshot
Response.Write(html);
}

string getSnapShot(string url) {
//A classe WebClient vem da biblioteca do HTMLUnit
WebClient webClient = new WebClient(BrowserVersion.FIREFOX_3_6);
try {
//Aqui vc pede o HTMLUnit para visitar a URL que vc passou
HtmlPage page = (HtmlPage)webClient.getPage(url);
//Aqui voce espera a execução do javascript da pagina (funcoes ajax no caso)
webClient.waitForBackgroundJavaScript(5000);
//Aqui você pega o HTML gerado
string html = page.asXml();
return html;
} finally {
webClient.closeAllWindows();
webClient = null;
}
}

O que acontece aí é o seguinte. Quando você exibir a página

snapshot.php?_escaped_fragment_key=/php/pagina1.php

você vai pedir pro HTMLUnit visitar a pagina

index.php#!/php/pagina1.php e retornar o conteúdo DEPOIS que o javascript rodar e colocar o conteúdo ajax no lugar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pow Brunão valeu pela dica...

 

Deixa só te encher mais um pouco.. sahuashuasuh

 

Estava dando uma estudada no HtmlUnit para entender melhor o seu funcionamento e encontrei ate um material bacana que explica um pouco como funciona: http://www.aviyehuda.com/blog/2011/05/16/htmlunit-a-quick-introduction/

Agora surgiu um outro problema e estou tendo dificuldade para encontrar na web....
Encontrei um link para baixar o htmlUnit mas n estou entendendo como abro ele...

Link:

http://sourceforge.net/projects/htmlunit/files/htmlunit/2.12/

 

Eu já baixei os dois arquivos, mas n sei como utilizar! N sei s tenho q instalar no servidor ou qual arquivo tenho q abrir para inserir ou alterar os códs.

 

mals te incomodar quanto a isso... mas s vc tiver algum material ou link q explique um pouco sobre o processo de instalação do HtmlUnit fico agradecido.

Já tentei ir no próprio site... mas n encontrei nada explicando a respeito.. caso encontre posto aqui.

Ah! Encontrei um outro material bacana sobre crawlable, mas n entendi onde insiro o cod que o auto apresentou, saca só:

http://www.anotai.com/note/136006#!home

 

 

 

 

 

Brigadao Man c já me deu uma luz massa de como funciona as coisas... assim que resolver isso posto aqui. abraço

 

 

 

 





Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa cara,

 

Você só precisa de baixar o bin. O src é o código fonte, não é necessário.

Dentro do bin deve ter vários arquivos .jar, que são da biblioteca do HTMLUnit.

 

Eu não sei como rodar isto com PHP, talvez seja melhor perguntar no fórum do PHP.

Aqui também deve ter algo: http://php.net/manual/en/book.java.php

 

Quando eu fiz em .Net precisei de utilizar um conversor para tornar cada .jar uma dll, e então podia utilizar a biblioteca normalmente.
Eu acredito que PHP deva ter algo mais prático do que isto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa cara,

 

Você só precisa de baixar o bin. O src é o código fonte, não é necessário.

Dentro do bin deve ter vários arquivos .jar, que são da biblioteca do HTMLUnit.

 

Eu não sei como rodar isto com PHP, talvez seja melhor perguntar no fórum do PHP.

Aqui também deve ter algo: http://php.net/manual/en/book.java.php

 

Quando eu fiz em .Net precisei de utilizar um conversor para tornar cada .jar uma dll, e então podia utilizar a biblioteca normalmente.

Eu acredito que PHP deva ter algo mais prático do que isto.

 

 

Blz Bruno... VLWS MESMO!!!

Já estou começando a entender um pouco. Percebi que no meu servidor n possui Java instalado... dai estou tentando encontrar uma solução em php....

 

Ah! Nas minhas pesquisas acabei encontrando esse script:

http://www.victorferraz.com.br/ajax-com-url-amigavel/

 

Vou tentar dar uma sacada.. c acha q vale a pena?

 

+1x Vlws pelas orientações \o... assim q resolver posto aqui. abs

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.