Я работаю над небольшим Угловым приложением, и я нахожусь на полпути с проблемой разума. Общеизвестно, что SEO-пауки/искатели не используют Javascript, поэтому все данные META должны загружаться во время загрузки сервера. Я пытаюсь создать очень динамичную базу, которую я могу использовать для будущих проектов.
Мое приложение создается с использованием LAMP, я не против Node, но я должен использовать PHP/MySQL для этого конкретного проекта. У меня есть основной файл конфигурации "config.json", а через главную страницу индекса я загружаю его перед обработкой HTML, чтобы установить все важные данные META. Теперь я загружаю один и тот же файл конфигурации в свое угловое приложение, используя "http.get(...)". Я просто чувствую, что нет необходимости загружать один и тот же файл дважды.
Я могу решить эту проблему, установив конфигурацию с помощью скрипта на главной странице,
<?php
$config_plain = file_get_contents( './app/data/config.json', FILE_USE_INCLUDE_PATH );
$config = json_decode( $config_plain );
// # set config for meta data on load
?>
<!DOCTYPE HTML>
<html ng-app="foobar" ng-controller="dataCtrl">
<head>
<title ng-bind="page.title"><?php echo $config->title; ?></title>
<meta name="description" content="<?php echo $config->meta->description; ?>">
...
<script>
angular.module('foobar', [...])
.controller('dataCtrl', ['$rootScope', function($rootScope) {
$rootScope.config = <?php echo $config_plain; ?>;
$rootScope.page = { };
$rootScope.page.title = $rootScope.config.brand;
// # set config for data binding
}])
.service('page', ['$rootScope', function($rootScope) {
return {
title: function(route) {
$rootScope.page.title = $rootScope.config.brand + ' | ' + route;
// # update page title dynamically
}
};
}]);
</script>
</head>
</html>
В качестве альтернативы,
<?php
$config_plain = file_get_contents( './app/data/config.json', FILE_USE_INCLUDE_PATH );
$config = json_decode( $config_plain );
// # set config for meta data on load
?>
<!DOCTYPE HTML>
<html ng-app="foobar" ng-controller="dataCtrl">
<head>
<title ng-bind="page.title"><?php echo $config->title; ?></title>
<meta name="description" content="<?php echo $config->meta->description; ?>">
...
<script>
angular.module('foobar', [...])
.controller('dataCtrl', ['$rootScope', function($rootScope) {
$http.get('/app/data/config.json')
.success(function(response) {
$rootScope.config = response;
$rootScope.page = { };
$rootScope.page.title = $rootScope.config.brand;
// # set config for data binding
});
}])
.service('page', ['$rootScope', function($rootScope) {
return {
title: function(route) {
$rootScope.page.title = $rootScope.config.brand + ' | ' + route;
// # update page title dynamically
}
};
}]);
</script>
</head>
</html>
Хотя все это кажется действительно грязным.
Мой вопрос заключается в том, как я могу динамически использовать контент приложения SEOing с использованием угловых и php?
Почти четыре года назад Мэтт Каттс сказал:
Googlebot продолжает получать умнее. Теперь у него есть возможность выполнить AJAX/JS> для индексации некоторых динамических комментариев http://goo.gl/F9et1
Вот официальный блог Google, если у вас есть подробные вопросы. http://googlewebmastercentral.blogspot.com/2011/11/get-post-and-safely-surfacing-more-of.html
Я честно думаю, что с тобой все будет хорошо. Попробуй это. Прочтите свою страницу эксперимента, чтобы страница была проиндексирована и оттуда. Что касается других поисковых систем (Yahoo и Bing), я думаю, что они не смогут это сделать какое-то время, если вообще когда-либо.
Примечание: комментарии MC были связаны с комментариями JS не на целых страницах, но я не могу найти ссылку на другие события G для понимания JS. Теперь я знаю, что он намного более продвинутый.