Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript链接和SEO?_Javascript_Seo - Fatal编程技术网

JavaScript链接和SEO?

JavaScript链接和SEO?,javascript,seo,Javascript,Seo,首先,看看这个演示页面: 页面上有一个菜单,单击菜单项将显示指向其他网页(网站的一部分)的各种链接。链接URL采用以下格式: www . foo . com / articles / XXX / descriptive-title-of-the-article 。。。其中XXX是给定物品的三位数ID 这一切看起来都不错,但有一个问题:所有这些链接都是通过JavaScript动态创建的。看看源代码——页面底部有一个JavaScript变量(db变量),它保存了用于生成链接的所有数据 我使用Jav

首先,看看这个演示页面:

页面上有一个菜单,单击菜单项将显示指向其他网页(网站的一部分)的各种链接。链接URL采用以下格式:

www . foo . com / articles / XXX / descriptive-title-of-the-article
。。。其中XXX是给定物品的三位数ID

这一切看起来都不错,但有一个问题:所有这些链接都是通过JavaScript动态创建的。看看源代码——页面底部有一个JavaScript变量(db变量),它保存了用于生成链接的所有数据

我使用JavaScript是因为我不想使用服务器端。我假设,在这种情况下,我必须将数据存储在SQL数据库中,然后使用C#/PHP/etc生成链接。然而,这对我来说不是一个选择——我是严格面向未来的 客户端

顺便说一句,如果你想看到一个更详细的JavaScript生成链接的演示,请点击这里——该页面上有大约400个链接,所有这些链接都是通过JavaScript动态生成的

问题:

现在,我喜欢这种方法——使用JavaScript生成链接——然而,这种方法的结果是搜索引擎爬虫不会注册任何这些链接——他们只是“看到”一个没有链接的空页面(我认为这是一场SEO灾难)

所以,我想知道,如何优化这种方法

更新(后续问题):

难道我不能用谷歌网站地图告诉谷歌爬虫网站上存在哪些网页吗?这样我就可以保持首页(上面的演示)的原样(没有静态链接),爬虫程序将使用站点地图来抓取我网站的所有网页


我对谷歌网站地图一无所知,但我想知道为什么没有人推荐它们。他们能解决我的问题吗

看起来您真正需要做的是在部署之前使用模板生成HTML,使用类似于's
ttree
的东西。然后,您可以将数据库保存在开发机器上。不需要JavaScript

以下是一个简化的示例:

[%- 
db = {
    Foo => [
        { id => "001", title => "First article" },
        { id => "002", title => "Another article" },
        { id => "003", title => "Yet another article" },
    ], 
    Bar => [
        { id => "004", title => "First article in this category" },
        { id => "005", title => "Another article in bar" },
        { id => "006", title => "Third bar article" },
    ],
    Baz => [
        { id => "007", title => "Baz article No. 1" },
        { id => "008", title => "The second Baz article" },
        { id => "009", title => "The last article" },
    ],
}
-%]

[%- FOR category IN db.keys -%]

<h2>[%- category -%]</h2>

[%- articles = db.$category -%]

[%- FOR article IN articles -%]

<p>Article: <a href="http://www.example.com/articles/[%- article.id -%]/">
    [%- article.title -%]</a></p>

[%- END -%]
[%- END -%]
[%-
db={
Foo=>[
{id=>“001”,title=>“第一篇文章”},
{id=>“002”,title=>“另一篇文章”},
{id=>“003”,title=>“又一篇文章”},
], 
条形图=>[
{id=>“004”,title=>“该类别的第一篇文章”},
{id=>“005”,title=>“酒吧里的另一篇文章”},
{id=>“006”,title=>“第三条”},
],
Baz=>[
{id=>“007”,标题=>“Baz第1条”},
{id=>“008”,title=>“第二篇Baz文章”},
{id=>“009”,title=>“最后一篇文章”},
],
}
-%]
[%-对于db.keys中的类别-%]
[%-类别-%]
[%-articles=db.$category-%]
[%-对于文章中的文章-%]
第条:

[%-结束-%] [%-结束-%]
C:\Temp>tpage t.html
条
第条:

第条:

第条:< /p> 巴兹 第条:< /p>

同时使用js和href。。。 诀窍就是让站点与href一起工作,这是谷歌机器人将看到的 同时,如果浏览器支持,将使用js click处理程序


当然,处理程序返回false也会停止href。

您可以在此处使用
所有anachor链接
,这意味着禁用javascript的爬虫程序和用户也会看到链接。您永远不要忘记没有javascript的用户,以及完全基于javascript的页面功能(不提供noscript替代方案),这在SEO意义上也会让您受益。

如果您因为喜欢javascript而不喜欢其他语言而避免使用服务器端,那么您可以始终在服务器上使用node.js。Express已经有了一个可用的模板,所以您甚至可以在客户端或服务器上使用相同的模板


无关:您不应该在CDN上使用jQuery的“最新”引用(即1.4对1.4.4)。这些请求是一个很大的性能劣势。在这一点上,如果您只使用自托管副本,回访访客的访问速度会更快。

需要注意的是,如果您在站点地图中包含无法通过对站点进行爬网获得的链接,您将在搜索引擎中被标记


由于这些页面被视为门户页面,与大多数主要搜索引擎的t&c背道而驰,而且没有参考URL,它们的得分将非常低,即使它们被索引,它们的排名也不会很好

使用站点地图将有助于你的页面能够被谷歌抓取,但谷歌会根据页面标题+内容对你进行排名。另外,若您使用permalinks(您已经在使用),并且页面标题也作为h1标记存在于正文中,那个就太好了

您最好将一些内容作为html放在正文中。您应该使用javascript丰富页面功能。然而Google页面完全是javascript,它也不喜欢javascript。它是规则,在它确定javascript内容之前,我们都应该采用规则

如果你想添加一个站点地图,你可以使用下面的脚本

至顶部:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

重复的url列表。带时区的日期,优先级为0到1,默认值为0.5:

<url>
<loc>page url</loc>
<lastmod>2011-02-06T03:13:29+02:00</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>

页面url
2011-02-06T03:13:29+02:00
月刊
0.7
结束语:

</urlset>


只是想知道,没有javascript的用户会看到什么?我禁用JS时没有链接。你为什么不想在服务器端生成链接呢?Marko,JS是今天的标准。没有人希望人们编写与没有JS浏览器兼容的网站。@没有JavaScript的Marko用户将看不到任何内容,显然:)尝试在禁用JavaScript的情况下访问W3查看器-那里什么都没有。。。此外,请尝试使用IE访问W3查看器,并查看重定向:p@Kos-你只需遵守这条规则,然后想知道为什么搜索引擎不知道你网站上有哪些页面。@Sime-不,生成动态网页应该在
<url>
<loc>page url</loc>
<lastmod>2011-02-06T03:13:29+02:00</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
</urlset>