Page 414 - AngularJS权威教程
P. 414

394  第 30 章  AngularJS 和 IE 浏览器


                 在我们的Angular应用中,需要根据我们所使用的URL风格让Google以不同的方式处理应用
             站点。

             30.4.1  hashbang语法


                 Google最初编写Ajax采集规范就是为了使用hashbang语法传送URL,这是一个为JS应用程序
             创建永久链接的原始方法。
                 这需要在应用路由中使用hashPrefix(默认的)配置我们的应用:

                 angular.module('myApp', [])
                 .configure(['$location', function($location) {
                     $location.hashPrefix('!');
                 }]);

             30.4.2  HTML5 路由模式

                 新的HTML5 pushState并不以相同的方式工作:它会修改浏览器的URL和历史记录。为了让
             Angular应用“欺骗”搜索机器人,可以在header中添加一个简单的元素:

                 <meta name="fragment" content="!">
                 这个元素会让Google蜘蛛使用新的爬行规范来抓取你的站点。当它遇到这个标签时,它会使
             用?_escaped_fragment=标签重新访问站点,而不是采用标准的抓取站点的方式。
                 假设要在$location服务中使用HTML5模式,可以像这样设置页面以使用httml5Mode:

                 angular.module('myApp', [])
                 .configure(['$routeProvider', function($routeProvider) {
                     $routeProvider.html5Mode(true);
                 }]);
                 查询字符串中有了_escaped_fragment_后,我们可以让后端服务器提供静态的HTML而不是
             客户端应用。

                 现在,后端服务器可以检测请求中是否包含_escaped_fragment_字段,如果包含,我们将
             提供静态HTML而不是纯Angular应用。

                         还可以使用代理实现这个功能,比如Apache或者Nginx,或者是一个后端服务。
                        如何设置超出了本书的范畴,然而,我们会使用一个NodeJS应用来讨论如何设
                        置它们。


             30.5  服务端处理 SEO 的选项

                 有许多选项可以使我们的站点更好地支持搜索引擎优化(Search Engine Optimization,SEO)。
             我们将会使用三种不同的方式演示如何从服务器端交付应用:

                  使用Node/Express中间件;
                  使用Apache重写URL;
                  使用Ngnix代理URL。
   409   410   411   412   413   414   415   416   417   418   419