【发布时间】:2017-06-16 21:02:54
【问题描述】:
我在一个有 15 个子站点和 13 个不同架构页面的大项目中。
目前,该站点基于ui.route 用于所有页面,我的数据集由$http 角度请求。
在搜索控制台上进行测试和试验后,看起来除了主页和来自$http 请求的数据之外,谷歌看不到我的所有页面。
我做错了什么?
到目前为止我正在做的是:
在<head>中设置基本标签:
<base href="/" />
创建 .htaccess:
RewriteEngine On
Options FollowSymLinks
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /#/$1 [L]
添加到app.config:
$locationProvider.html5Mode(true);
以我的app.config为例:
function createState(name) {
return {
url: '/' + name + '/:id',
templateUrl : 'templates/pages/' + name +'.html',
controller : 'singlePage',
resolve: {
pageData: function(getData, $stateParams) {
var params = $stateParams;
params.type = this.self.name;
return getData.getPageData(params.type, params)
}
}
}
}
.state('info', createState('info'))
.state('news', createState('news'))
.state('event', createState('event'))
$urlRouterProvider.otherwise('/');
$locationProvider.html5Mode(true);
【问题讨论】:
-
嗯,google crawl bot 可以执行 JavaScript(这个功能是不久前实现的)。但是机器人仍然像以前一样抓取 URL。它正在检查 HTML 标记中所有
a-Tag 的href属性并跟进它们。如果您使用ui.router提供的 JavaScript 状态更改功能,机器人将永远无法访问此链接。它也无法识别 HTML5 URL 路由更改。 -> 所以不会抓取/索引任何页面。 -
我可以创建一个答案,提供我上面所说的内容。我还可以为您提供一个解决方案,如何使爬虫机器人可以看到其他 URL。
-
@lin 我真的很感谢你的完整回答!
标签: javascript angularjs .htaccess seo