Info über Setup:Prerender + AngularJS - Crawlers Auszeit
Ich habe installiert Prerender (https://github.com/prerender/prerender) erfolgreich auf meinem eigenen Server, Ubuntu 16.
Das ist mein .htaccess ist, es umschreibt die URL zum Prerender, wenn ein Crawler erkannt wird. Beispiel: http://www.example.nl/63/Merry wird http://example.nl:3000/http://www.example.nl/63/Merry
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteCond %{HTTP_USER_AGENT} baiduspider|facebookexternalhit|twitterbot|redditbot|slackbot|msnbot|googlebot|duckduckbot|bingbot|rogerbot|linkedinbot|embedly|flipboard|tumblr|bitlybot|SkypeUriPreview|nuzzel|Discordbot|quora\ link\ preview|showyoubot|outbrain|pinterest [NC,OR]
RewriteCond %{QUERY_STRING} ^_escaped_fragment_=$
RewriteRule ^(.*)$ http://example.nl:3000/http://www.example.nl/$1? [R=301,L]
#RewriteRule ^(.*)$ http://art.example.net/$1? [R=301,L]
RewriteRule ^(.*)/(.*)$ /#$1/$2 [NC,L]
Das Problem:
Meta-Daten werden nicht auf Skype geladen, Reddit, Twitter, wenn Prerender verwenden. Das Umschreiben der URL auf die alte PHP-Website: http://art.example.net (derzeit im htaccess kommentiert) funktioniert. Da alle Meta-Tags auf der PHP- und der Angular-Website identisch sind, ist wahrscheinlich der Voraber die Ursache des Problems.
Fehler Beispiel von Twitter (https://cards-dev.twitter.com/validator URL: http://example.nl/63/Merry) mit Prerender:
ERROR: Failed to fetch page due to: HttpConnectionTimeout
WARN: this card is redirected to http://example.nl:3000/http://www.example.nl/63/Merry
Twitter, wenn zu art.example.net Umleitung (auch die Haupt-URL: http://example.nl/63/Merry)
INFO: Page fetched successfully
INFO: 19 metatags were found
INFO: twitter:card = summary_large_image tag found
INFO: Card loaded successfully
WARN: this card is redirected to http://art.example.net/63/Merry
Die Verwendung der PHP-Version funktioniert und alle Metadaten werden geladen.
In der Zukunft möchte ich die PHP-Website komplett entfernen, also würde ich wirklich gerne mit Prerender arbeiten. Prerender funktioniert in Discord und Postman (mit geändertem User Agent-Header). Ich weiß einfach nicht, warum es für einige andere Agenten nicht funktioniert.