Prérender avec un routeur UI angular ne rendant pas le contenu dynamic de la page racine

J’ai le fonctionnement et l’exécution du prérender pour toutes les pages, à l’exception de la page racine (home).

Par exemple:

http://www.example.com/?_escaped_fragment_= 

ne rend pas les données dynamics. Toutes les autres pages fonctionnent comme

 http://www.example.com/contact?_escaped_fragment_= 

C’est comme si le routeur UI angular ne savait pas dans quel état se trouve la racine, il laisse donc la vue vide. Cependant, la page racine http://www.example.com sans escaped_fragment rend correctement.

J’ai ajouté la balise META fragment dans l’en-tête et html5 à true dans la configuration angular.


index.html:

  

app.js:

 $locationProvider.html5Mode(true); $locationProvider.hashPrefix('!'); 

.htaccess:

 # 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  #RequestHeader set X-Prerender-Token "MY TOKEN"   RewriteEngine On  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://www.example.com$2 [P,L]   # BEGIN WordPress  RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L]  # END WordPress 

L’URL de votre fichier .htaccess pourrait être /index.php pour la page d’accueil. Si oui, vous pouvez changer votre règle de réécriture à ceci:

 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))(index\.php)?(.*) http://service.prerender.io/http://www.example.com$3 [P,L] 

J’ai ajouté (index.php)? pour capturer cela si trouvé et changé les 2 $ à 3 $. N’oubliez pas de remplacer le site http://www.example.com par votre domaine.