angularjs:使用Ruby On Rails的ajax网站没有抓取

时间:2014-01-29 07:17:38

标签: ruby-on-rails ajax angularjs seo bots

我正在尝试使angularjs网站可以抓取。为此我正在使用?_escaped_fragment =解决方案,正如Google建议的那样。

例如:

当google看到"http://xample.com/#!/Home"等哈希片段的请求时,会将网址转换为"http://xample.com/?_escaped_fragement_=/Home"

我已在rails中实施Index controller接受此类请求,并将该请求重定向到crawler controller,后者又向Google提供动态生成的HTML快照。

但我的主页http://xample.com/除外 没有其他页面被抓取。(也许是因为hashbang)

以下是即使按照谷歌的建议实施?_escaped_fragment_ =解决方案后仍未抓取的网址: -

http://xample.com/#!/Home
http://xample.com/#!/xyz
http://xample.com/#!/abc
http://xample.com/#!/def

我使用的控制器: -

Index controller接受带有“?_escaped_fragment _ =”

的网址
    class IndexController < ApplicationController
      def index()
        if params['_escaped_fragment_'] == '/Home'
          redirect_to :controller=>'crawler', :action => 'crawlhome'
          return
        elsif params['_escaped_fragment_'] == '/Xyz'
         redirect_to :controller=>'crawler', :action => 'crawlxyz'
          return
        end
 elsif params['_escaped_fragment_'] == '/abc'
         redirect_to :controller=>'crawler', :action => 'crawlabc'
          return
        end
    end

 elsif params['_escaped_fragment_'] == '/def'
         redirect_to :controller=>'crawler', :action => 'crawldef'
          return
        end
end

爬虫控制器

    class CrawlerController < ApplicationController
      layout false
      require 'net/http'
      require 'uri'
      def crawlhome
      @data = "getting data from api and displaying same data in view"
      end

      def crawlXyz
      @data = "getting data from api and displaying same data in view"
      end

       def crawlabc
      @data = "getting data from api and displaying same data in view"
      end

   def crawldef
      @data = "getting data from api and displaying same data in view"
      end
    end

在我公司工作的Seo有关人员建议我在网址中实施没有hashbang(推送状态)的网站。这是解决问题的正确方法。

然而,这在非Html浏览器中不起作用。

实施http://xample.com/#!/Home可能会出现什么问题。为什么在上述情况下不会抓取。

我在论坛上尝试了很多不同的解决方案,但仍然没有给我正确的结果。

1 个答案:

答案 0 :(得分:1)

实际上面的代码正在运行.Google在4天(很长一段时间)后开始抓取..认为代码中有错误。

希望这对其他开发者有所帮助。