2017-10-21 70 views
0

je la règle suivanteIIS règle de réécriture pour dialogue Partager Facebook ne fonctionne pas

<rule name="SEO" enabled="true" stopProcessing="true"> 
     <match url=".*" /> 
     <conditions logicalGrouping="MatchAny"> 
      <add input="{HTTP_USER_AGENT}" pattern="(facebookexternalhit)|(facebook)|(Twitterbot)|(Pinterest)" /> 
      <add input="{QUERY_STRING}" pattern=".*escaped_fragment_=(.*)" /> 
     </conditions> 
     <action type="Rewrite" url="http://localhost:8004/{URL}" /> 
</rule> 

de mon AngularJS application hébergé sur IIS (Windows Server 2012).

Mon application utilise la html5Mode

$locationProvider.html5Mode().enabled = true; 

et le port 8004 est ouvert (je désactivé le pare-feu Windows pour un certain temps pour vérifier si mon scénario fonctionne)

Le scenrio est facile. Quand quelqu'un veut partager ma AngularJS page via facebook, la demande sera redirigée le port, whene le PhantomJS est en écoute (pour rendre la page)

Mais le problème est que je ne peux voir l'erreur 404 de la part boîte, et aucune demande est lues par le script PhantomJS (je ne vois rien dans la fenêtre de la console)

var system = require('system'); 
var server = require('webserver').create(); 

server.listen(port, function (request, response) { 
    console.log(JSON.stringify(request, null, 4)); 
}); 

il semble donc que la règle de réécriture ne fonctionne pas (c'est mon estimation). Si je vais juste au http://localhost:8004/, je peux voir la page rendue et le journal de phantomJS dans la fenêtre de console (ainsi cela fonctionne)

+0

Avez-vous utilisé l'outil de débogage de FB effacer le cache? – CBroe

Répondre

1

Si vous essayez de réécrire des demandes à différents site Web d'IIS (ou application différente), alors avant que vous devez installer ARR:

1) vous devez installer un module ARR https://www.iis.net/downloads/microsoft/application-request-routing

2) Dans le gestionnaire IIS, vous devez activer le proxy inverse

2.1) Sur le nœud serveur cliquez sur "application Demande de routage Cache"

2.2) Cliquez sur « Paramètres proxy du serveur » et cliquez sur « Activer proxy », puis « Appliquer »

vous devez également appliquer petit correctif dans votre règle:

<rule name="SEO" enabled="true" stopProcessing="true"> 
     <match url=".*" /> 
     <conditions logicalGrouping="MatchAny"> 
      <add input="{HTTP_USER_AGENT}" pattern="(facebookexternalhit)|(facebook)|(Twitterbot)|(Pinterest)" /> 
      <add input="{QUERY_STRING}" pattern=".*escaped_fragment_=(.*)" /> 
     </conditions> 
     <action type="Rewrite" url="http://localhost:8004{URL}" /> 
</rule>