PhantomJS无法正确提供JS和CSS文件

4

我有一个运行中并监听8080端口的Node服务器。有一个mod_rewrite规则处于活动状态,将机器人重定向到该端口。

RewriteCond %{HTTP_USER_AGENT} (googlebot|adsbot-google|bingbot|msnbot|psbot|gigabot|twitterbot|linkedinbot|yahoo-mmcrawler|pingdom\.com_bot) [NC]
RewriteRule ^ http://127.0.0.1:8080%{REQUEST_URI} [P]

该节点脚本依赖于一个phantomjs脚本,用于打开机器人请求的任何URL并返回内容。此代码取自此处http://backbonetutorials.com/seo-for-single-page-apps/
我通过在本地计算机上运行phantomjs,并使用相同的phantomjs代码直接请求我的网页进行了测试。结果与“作为Google抓取”指示(Google网站管理员工具)相同,即CSS和JS文件未被正确提供。
CSS文件仅包含


<html><head></head><body></body></html>

并且没有实际的CSS内容。 JS文件有

<html><head></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">

在任何JS代码之前插入。

因此,当Google尝试抓取和呈现页面时,布局会破裂,并且会抛出JS错误。

有什么提示吗?谢谢。


1
嘿,你解决了这个问题吗?我也遇到了同样的问题。谢谢。 - smoq
1个回答

2

好的,我找到了解决方法。

你可能使用了page.content来处理每个请求。但是你只需要对html文件使用它。下面是我的代码:

    if (url.indexOf('.html') > -1) cb(page.content);
    else cb(page.plainText);

第二种解决方案需要更改您的htaccess文件。
RewriteCond %{HTTP_USER_AGENT} (googlebot|adsbot-google|bingbot|msnbot|psbot|gigabot|twitterbot|linkedinbot|yahoo-mmcrawler|pingdom\.com_bot) [NC]
RewriteCond %{REQUEST_URI} (.*).html(.*) <---- ADDED THIS ONE
RewriteRule ^ http://%{HTTP_HOST}:3004%{REQUEST_URI} [P]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接