对于我的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
标志未执行。但我对此并不十分肯定。
答案 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!