2015-09-23 63 views
10

我覺得我已經嘗試過每一個選項,沒有任何成功。首先讓我列出我已經試過選項:Google索引的角度應用程序

在角:

$locationProvider.html5Mode(true); 

在HTML

我已經使用以下步驟嘗試這樣的:

使用預渲染與Apache ,請添加以下元標題:

<head> 
    <meta name="fragment" content="!"> 
</head> 

配置Apache:

RewriteEngine On 
# If requested resource exists as a file or directory 
    # (REQUEST_FILENAME is only relative in virtualhost context, so not usable) 
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR] 
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d 
    # Go to it as is 
    RewriteRule^- [L] 

    # If non existent 
    # If path ends with/and is not just a single /, redirect to without the trailing/
     RewriteCond %{REQUEST_URI} ^.*/$ 
     RewriteCond %{REQUEST_URI} !^/$ 
     RewriteRule ^(.*)/$ $1 [R,QSA,L]  

    # Handle Prerender.io 
    RequestHeader set X-Prerender-Token "YOUR_TOKEN" 

    RewriteCond %{HTTP_USER_AGENT} baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora\ link\ preview|showyoubot|outbrain|pinterest [NC,OR] 
    RewriteCond %{QUERY_STRING} _escaped_fragment_ 

    # Proxy the request 
    RewriteRule ^(.*)$ http://service.prerender.io/http://%{HTTP_HOST}$1 [P,L] 

    # If non existent 
    # Accept everything on index.html 
    RewriteRule^/index.html 

這並沒有在所有的工作:谷歌無法讀取我的子頁面。

使用節點/ Phantomjs渲染我建立這個網站

var express = require('express'); 
var app = module.exports = express(); 
var phantom = require('node-phantom'); 
app.use('/', function (req, res) { 
    if (typeof(req.query._escaped_fragment_) !== "undefined") { 
     phantom.create(function (err, ph) { 
      return ph.createPage(function (err, page) { 
       return page.open("https://system.dk/#!" + req.query._esca$ 
        return page.evaluate((function() { 
         return document.getElementsByTagName('html')[0].innerHT$ 
        }), function (err, result) { 
         res.send(result); 
         return ph.exit(); 
        }); 
       }); 
      }); 
     }); 
    } else 
     res.render('index'); 
}); 

app.listen(3500); 
console.log('Magic happens on port ' + 3500); 

這裏的網頁,然後加入一個代理在我的Apache配置,使所有的請求我的域名端口3500上指出。

這不起作用,因爲它無法呈現索引,並且當我最終發送它的HTML頁面時JavaScript不會呈現。

以下自定義快照指南

然後我遵循這個指南:

http://www.yearofmoo.com/2012/11/angularjs-and-seo.html

然而,這要求我做這不是我所期待的一切的自定義快照,很討厭保持。另外make-snapshot在我的服務器上不起作用。

+0

所以當你在url中插入'_escaped_fragment_ ='時會發生什麼? – charlietfl

+0

@charlietfl現在如果我做http://www.learningbank.dk/?_escaped_fragment_=它重定向到我的索引 –

+0

嘗試刪除BOT條件檢查 – charlietfl

回答

2

從理論上講,您不應該將您的頁面預渲染到Google抓取工具。他們現在解析javascript。 http://googlewebmastercentral.blogspot.ca/2014/05/understanding-web-pages-better.html

谷歌解析我的angularJS網站就好了。 https://www.google.nl/search?q=site%3Atest.coachgezocht.nu

使用$ locationProvider.html5Mode(true);和:

RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_URI} !index 
    RewriteRule (.*) index.html [L] 
相關問題