JavaScript链接和SEO?

时间:2010-11-21 20:25:48

标签: javascript seo

首先,请看一下这个演示页:http://vidasp.net/tinydemos/seo-javascript-links.html

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

www . foo . com / articles / XXX / descriptive-title-of-the-article

...其中XXX是给定文章的三位数ID。

这一切似乎都没问题,但有一个问题:所有这些链接都是通过JavaScript动态创建的。看一下源代码 - 在页面底部有一个JavaScript变量(db变量),它包含用于生成链接的所有数据。

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

顺便说一句,如果你想看一个更精细的JavaScript生成链接演示,请到这里 - http://www.w3viewer.com - 该页面上有大约400个链接,所有链接都是通过JavaScript动态生成的。

问题:

现在,我喜欢这种方法 - 使用JavaScript生成链接 - 但是,这种方法的结果是搜索引擎抓取工具不会注册任何这些链接 - 他们只是“看到”没有链接的空白页面(这是一场SEO灾难,我猜想。)

所以,我想知道,我怎么能优化这种方法?

更新(后续问题):

我无法使用Google站点地图告诉Google抓取工具网站上存在哪些网页?这样我就可以保持头版(上面的演示)不受影响(没有静态链接),抓取工具会使用站点地图抓取我网站的所有网页。

我对谷歌站点地图还不了解,但我想知道为什么没有人建议它们。他们可以解决我的问题吗?

6 个答案:

答案 0 :(得分:3)

您真正需要做的就是在使用Template::Toolkitttree之类的内容之前使用模板生成HTML。然后,您可以将数据库保留在开发计算机上。不需要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 -%]
C:\Temp> tpage t.html
<h2>Bar</h2>

<p>Article: <a href="http://www.example.com/articles/004">First article in this
category</a></p>

<p>Article: <a href="http://www.example.com/articles/005">Another article in bar
</a></p>

<p>Article: <a href="http://www.example.com/articles/006">Third bar article</a><
/p>

<h2>Baz</h2>

<p>Article: <a href="http://www.example.com/articles/007">Baz article No. 1</a><
/p> 

...

答案 1 :(得分:1)

如果你因为喜欢JavaScript而不是其他语言而避开服务器端,那么你总是可以在服务器上使用node.js.已有a jQuery Templates view engine for node.js可与Express配合使用,因此您甚至可以在客户端或服务器上使用相同的模板。

无关:你不应该在CDN上使用jQuery的“最新”引用(即1.4 vs 1.4.4)。那些请求are served with a very short expires header,这是一个很大的性能劣势。此时,如果您只使用自托管副本,返回访问者的速度会更快。

答案 2 :(得分:1)

请注意,如果您在网站地图中包含的链接无法通过抓取您的网站获得,则您将在搜索引擎中进行标记。

由于这些页面被视为与大多数主要搜索引擎的t&amp; c相对应的门页,也没有引用URL,因此它们将获得非常低的分数,即使它们被编入索引,它们也不会排名很好。

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

您可以使用<noscript> All your anachor links here</noscript>,这意味着抓取功能的抓取工具和用户也会看到链接。你永远不应该忘记没有javascript的用户,以及仅仅基于javascript的页面的基本功能(不提供noscript替代品),这也将在SEO意义上使你受益。

答案 5 :(得分:0)

使用站点地图有助于您的网页能够通过Google进行抓取,但Google会按页面标题+内容对您进行排名。此外,如果你使用固定链接(你已经在使用),页面标题也作为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">

重复的网址列表。带时区的日期,优先级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>

结局:

</urlset>