2015-09-23 4 views
10

Я чувствую, что я попытался выполнить каждый отдельный вариант, и ничего не получилось. Прежде всего позвольте мне перечислить варианты я пробовал:Угловое приложение, проиндексированное Google

Использование PreRender с Apache:

Я попытался это, используя следующие шаги:

В Угловое:

$locationProvider.html5Mode(true); 

В HTML , добавить этот мета-заголовок:

<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 

Это не работает вообще: Google не смог прочесть мои подстраниц.

Использование Node/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

так что происходит, когда вы вставляете '? _escaped_fragment_ =' в url? – charlietfl

+0

@charlietfl прямо сейчас, если я делаю http://www.learningbank.dk/?_escaped_fragment_= он перенаправляет на мой индекс –

+0

попробуйте удалить бота условия для его проверки – charlietfl

ответ

2

Теоретически вам не нужно предварительно загружать страницу в Google гусеничный. Теперь они анализируют javascript. http://googlewebmastercentral.blogspot.ca/2014/05/understanding-web-pages-better.html

Google тщательно анализирует мой сайт 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] 
Смежные вопросы