I'm working to make an AngularJS e-commerce application of mine more SEO friendly so I'm working on getting Prerender.io up and running on the app.
My setup for hosting/serving files is with nginx from a docker container, hosted on AWS.
So far I've:
Altered my nginx.conf - based on this official nginx.conf recommended by Prerender docs
server { listen 9001; server_name localhost; root /app; index index.html; location /store { proxy_set_header X-Prerender-Token RIDE(H9j9jdeRANDOMtoken; set $prerender 0; if ($http_user_agent ~* "baiduspider|twitterbot|facebookexternalhit|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest|slackbot|vkShare|W3C_Validator") { set $prerender 1; } if ($args ~ "_escaped_fragment_") { set $prerender 1; } if ($http_user_agent ~ "Prerender") { set $prerender 0; } if ($uri ~* "\.(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|svg|eot)") { set $prerender 0; } #resolve using Google's DNS server to force DNS resolution and prevent caching of IPs resolver 8.8.8.8; if ($prerender = 1) { #setting prerender as a variable forces DNS resolution since nginx caches IPs and doesnt play well with load balancing set $prerender "service.prerender.io"; rewrite .* /$scheme://$host$request_uri? break; proxy_pass http://$prerender; } expires -1; add_header Pragma "no-cache"; add_header Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0"; try_files $uri$args $uri /index.html =404; } }
UPDATE:
At suggestion of Prerender.io team member, I've hardcoded the redirect to be in https
instead of http
which was most likely the cause of that 301 issue.
Rewrote this line to fix: rewrite .* /https://$host$request_uri? break;
Added a
fragment
header tag<meta name="fragment" content="!">
Set special
$locationProvider
variables$locationProvider.html5Mode(true); $locationProvider.hashPrefix('!');
When I share a page on facebook, to test the crawler, it registers on the prerender dashboard at least. (A good sign because at least its hitting prerender.io, so $prerender
is being set to 1 in nginx and the right prerender token is getting set).
However I am getting 404.
Does anyone know what I'm doing wrong and/or where I should focus my debugging efforts??
Thanks in advance!!
所有评论(0)