301 redirige avec la réécriture d'URL pour réduire les URL avec les parameters de requête

D'accord, j'ai donc une réécriture d'URL mise en place sur mon server (IIS 7) afin que, par exemple,

http://example.org/p/1234/ 

est vraiment

 http://example.org/product/?product_id=1234 

(Avec / produit / contenant un file index pour une application Web capable de traiter les parameters de requête).

Le problème est que je veux que tout le monde utilise le /p/1234/ urls maintenant, alors j'aimerais envoyer une redirection 301 chaque fois que quelqu'un visite l' ancienne URL de /product/?product_id=1234 , mais autant que je peux le dire Lorsque la réécriture d'URL se produit, en ce qui concerne le server, l'user est entré dans /product/?product_id=1234 .

Bien que dans la barre d'URL du browser, il puisse dire http://example.org/p/1234/ , quand je fais un déchargement des en-têtes et des variables CGI, /p/1234/ ne s'affiche pas dans aucune des variables.

Je suppose que mon souci est que, même si je peux le faire, il semble que cela rendrait une request simple assez compliquée:

  1. Aller à /p/1234/
  2. Réécrivez-le sur /product/?product_id=1234
  3. Était-ce à l'origine /p/1234/ ? ( oui )
  4. Ne fais rien.

Et sinon:

  1. Aller à /product/?product_id=1234
  2. Était-ce à l'origine /p/1234/ ? ( non )
  3. 301 Redirection vers /p/1234/
  4. Réécrivez-le sur /product/?product_id=1234
  5. Était-ce à l'origine /p/1234/ ? ( oui )
  6. Ne fais rien.

Je sais que finalement, certains index de search élimineront les anciennes URL en faveur de celles spécifiées par la redirection 301, mais jusqu'à ce moment, il semble que les servers comportent beaucoup de frais généraux.

En outre, si je l'ai configuré, y at-il un filter que je pourrais utiliser dans IIS pour le faire, ou devrais-je append la logique à mon webapp?

Notez que j'ai configuré <link rel="canonical".../> pour toutes ces pages, mais je vois encore que l'ancien format s'affiche dans les résultats de search.

  • RewriteRule Not Rewriting URL correctement
  • Comment faire pour que cette règle de réécriture de l'htacess arrête d'échouer en raison du paramètre final
  • Sous-domaine de réécriture de IIS 7 pour pointer vers un port spécifique
  • Apache: Comment puis-je utiliser JavaScript via PHP?
  • Créer un sous-domaine VHost & Forward
  • Sous-domaines Nginx et Rewrite Rules
  • Je suis un idiot en entrant une règle de réécriture permanente incorrecte, que fais-je?
  • Définir les permaculations WordPress directement dans httpd.conf?
  • Conversion spéciale de protection nginx hotlink de la règle d'application Apache .htaccess
  • "Ajp_read_header: ajp_ilink_receive a échoué"
  • Redirection du site, vraiment étrange
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.