首先:我希望下面的问题不是太笼统。
我有一个小问题,我想不出一个好的解决方案,我希望这里有人能帮助我。
这是我的情况:
我使用AJAX来动态加载页面。我的主要站点是index.php
,一旦我点击导航链接,AJAX脚本就会用新内容替换index.php
的内容,并向URL添加一个散列标签。例如:
我点击about.php
的链接,脚本将#about.php
添加到URL中,并将about.php
的内容加载到index.php
中。但是,有一个小问题,我想解决:
假设我们从直接导航到index.php#about.php
开始-这意味着index.php
的内容在2,3秒内可见,然后被about.php
的内容所取代。我想要避免。
我想出了一些主意,但它们都不是很好:
1)隐藏内容->然后在AJAX完成时进行AJAX调用->再次显示内容
缺点:内容在一秒钟内仍然可见
2)用CSS隐藏内容并在AJAX调用后显示
缺点:这将工作完美,但用户没有Javascript(和GoogleBot)将只看到一个空页面。
3)使用一个空的index.php
,并将其内容放在main.php
中,并在页面加载时通过AJAX自动加载main.php
。
缺点:也可以工作,但是,没有JS和GoogleBot的用户在访问index.php
时只会看到一个空页面
这就是我所能想到的,所有三个解决方案都不好,因为我担心当我有一个空的index.php
时,SEO值会急剧下降(我可以接受没有JS的用户什么也看不见)。
注。我在某个地方读到,当你有display:none
在外部css文件,并阻止它与robots.txt
, GoogleBot不知道的区别,但我担心这可能不是情况?有人有经验吗?
编辑:我想我的整个问题归结为:
你认为用CSS隐藏index.php
的全部内容(然后用JS显示它),将是一个巨大的不去搜索引擎优化,或者它会与GoogleBot(毕竟内容仍然在源代码中,但对用户不可见)?
如果您使用查询字符串而不是散列,则可以让index.php在服务器级加载正确的内容。
像history.js这样的插件可以帮助你将url推送到浏览器,这样你仍然可以获得ajax浏览。
哇,从哪里开始…首先,页面"blink"我将它称为2-3秒,但它完全取决于用户的计算机,它执行javascript的速度有多快,以及AJAX调用返回的速度有多快,所以你可能有更大的延迟。
第二,我不会担心Googlebot看到任何ajax内容。虽然googlebot确实试图摆弄一些javascript,但它不会像普通浏览器那样进行ajax调用。如果Googlebot看到你的Ajax加载数据,我会非常惊讶。
Googlebot做了一个了不起的工作,弄清楚什么内容是通过html/css传递给用户,当他们访问你的页面。它还可以确定是否显示了某些内容,并且可以很好地确定该内容是填充物还是真正重要的内容。
你担心没有javascript的人会看到,当整个导航你的网站是基于javascript。这似乎无法调和。
你有可用的PHP。我的建议是放弃AJAX,用PHP来完成。在PHP中,您可以像在AJAX中一样轻松地编写相同的行为。
SEO指出:如果你正在寻找可靠的SEO结果,我建议使静态(非javascript版本)页面尽可能SEO友好。我喜欢"摘唾手可得的果实",比如确保页面只有一个H1,并且它有最重要的关键字。seomoz是我找到的搜索引擎优化信息最好的网站之一