在带有AngularJS的one.com服务器上使用Prerender.io

时间:2015-06-18 15:42:25

标签: angularjs apache .htaccess prerender

对于我的AngularJS应用程序,我尝试在one.com的服务器上使用 Prerender.io 服务。使用的网络服务器是Apache

我已尝试使用以下.htaccess文件(比较https://gist.github.com/thoop/8072354

# Change YOUR_TOKEN to your prerender token and uncomment that line if you want to cache urls and view crawl stats
# Change http://example.com (at the end of the last RewriteRule) to your website url

<IfModule mod_headers.c>
    RequestHeader set X-Prerender-Token "YOUR_TOKEN"
</IfModule>

<IfModule mod_rewrite.c>
    RewriteEngine On

    # If requested resource exists as a file or directory
    # (REQUEST_FILENAME is only relative in virtualhost context, so not usable)
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
    # Go to it as is
    RewriteRule ^ - [L]

    RewriteCond %{HTTP_USER_AGENT} baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora\ link\ preview|showyoubot|outbrain|pinterest|slackbot|vkShare|W3C_Validator [NC,OR]
    RewriteCond %{QUERY_STRING} _escaped_fragment_

    # Only proxy the request to Prerender if it's a request for HTML
    RewriteRule ^(?!.*?(\.js|\.css|\.xml|\.less|\.png|\.jpg|\.jpeg|\.gif|\.pdf|\.doc|\.txt|\.ico|\.rss|\.zip|\.mp3|\.rar|\.exe|\.wmv|\.doc|\.avi|\.ppt|\.mpg|\.mpeg|\.tif|\.wav|\.mov|\.psd|\.ai|\.xls|\.mp4|\.m4a|\.swf|\.dat|\.dmg|\.iso|\.flv|\.m4v|\.torrent|\.ttf|\.woff))(.*) http://service.prerender.io/http://%{HTTP_HOST}/$2 [P,L]

    # If non existent
    # Accept everything on index.html
    RewriteRule ^ /index.html [L]
</IfModule>

我尝试使用Google网站站长工具(Fetch as Google)来检查它是否有效。不幸的是,谷歌机器人提取的网站并不是Prerender.io预取的网站。

可能是,P中的RewriteRule标志未执行。但我对此并不十分肯定。

1 个答案:

答案 0 :(得分:0)

抓取谷歌有一个已知的问题,它没有检查转义的片段协议。实际的Googlebot没有此问题,并检查元片段标记并添加转义的片段参数。

对于任何一个#!您仍需要附加的网址或HTML5推送状态网址?_escaped_fragment_ =手动。

以下是Google对此的回答:https://productforums.google.com/forum/#!topic/webmasters/YaOZrKGYrGA

如果你有#!网址如 http://www.example.com/#!/user/1 然后你会希望获取谷歌获取此URL http://www.example.com/?_escaped_fragment_=/user/1

如果你有非#!网址如 http://www.example.com/user/1 然后你会希望获取谷歌获取此URL http://www.example.com/user/1?_escaped_fragment_=

如果您仍然遇到问题,请随时给我发电子邮件至todd@prerender.io!