PhantomJS没有正确地提供JS和CSS文件

我有一个节点服务器运行并监听端口8080.有一个mod_rewrite规则处于活动状态,将Botsredirect到此端口。

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代码直接请求我的网页来testing这一点。 结果与“crawl as google”表示的一样(google网站pipe理员工具),也就是说CSS和JS文件没有被phantomjs正确提供。

CSS文件只包含

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

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

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

插入任何JS代码之前的最开始。

因此,当谷歌试图抓取和呈现页面布局被打破,JS错误抛出。

任何提示? 谢谢。

好的。 我find了解决办法。

对每个请求使用probablly page.content 。 你只需要使用它的HTML文件。 这是我的代码:

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

第二个解决scheme需要改变你的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]