Angular SEO / NodeJS / PhantomJS – Servir des fichiers HTML statiques

Je suis en train d’implémenter ma propre solution PhantomJS afin de fournir des instantanés aux robots du moteur de recherche.

  • Mes instantanés sont ici: / public / snapshots
  • Mon URL est comme ceci: http://example.com/#!/a/b/c

Quand un robot vient, le URL / #! / Se transforme comme ceci: http://example.com/?_escaped_fragment_=/a/b/c

Je souhaite diffuser des fichiers statiques de / public / snapshots vers le robot d’exploration lors de l’parsing d’une de mes pages.

Solution actuelle

J’attrape le changement d’URL et réécris ceci:

  • http://example.com/?_escaped_fragment=/a/b/c (avec nginx)
  • dans ceci: http://example.com/snapshots/a/b/c

Il s’agit d’un itinéraire sur mon NodeJS, où j’obtiens le nom du fichier html en fonction des parameters url. Dans ce cas, ce serait /snapshots/a/b/c.html

Je reçois le fichier avec:

fs.readFile(file_path, function(err, content) { res.set('Content-Type', 'text/html'); res.send(content); }); 

Problème

Lorsque je définis le Content-Type en HTML, Angular / Express effectue une redirection et mon URL se présente comme suit:

  • http://example.com/?_escaped_fragment_=/a/b/c#!/

Si je vais sur cette URL, je peux voir le fichier de capture correct /a/b/c.html, mais après quelques millisecondes, je suis redirigé vers ma page d’accueil.

Des questions

  • Comment puis-je servir des fichiers statiques sans que Express ni Angular le redirige?
  • Si je fais une redirection de http://example.com/?_escaped_fragment_=/a/b/c à http://example.com/snapshots/a/b/c.html – qui fonctionne bien, la recherche les moteurs sont d’accord avec cela?

Merci