Existe-t-il un paramètre IIS permettant de supprimer les caractères "/" supplémentaires dans une URL demandée?

StackOverflow https://stackoverflow.com/questions/213153

Question

Le problème général:

Des URL provenant de nos serveurs Web IIS sont au format:

  

http://www.server.com/page.aspx

Nous constatons également que des URL de ce type entrent:

  

http://www.server.com//page.aspx

Nous aimerions nous débarrasser de ce caractère de chemin supplémentaire, car lorsque l'agent utilisateur est Internet Explorer, le problème est résolu en 2 pages différentes et, par conséquent, le contenu est téléchargé deux fois lorsqu'il doit être résolu à partir d'un cache.

Je ne sais pas s'il s'agit d'un problème à résoudre avec un module similaire à un module de réécriture d'URL, ou s'il existe un paramètre de configuration.

Était-ce utile?

La solution

Je pense que le problème vient d’IE et non d’IIS.

La réécriture d'URL fait généralement référence au processus de mappage d'une URL de http: // exemple / chaussures / clarkes à http: // exemple / shoes.aspx? maker = clarkes sur le serveur pour que le navigateur ne le sache pas.

Ce que vous devez faire est de rediriger le navigateur de http://www.server.com//page.aspx vers http://www.server.com/page. aspx en utilisant un 301 Http code de réponse .

En théorie:

Comme vous semblez utiliser ASP.NET, la méthode la plus transparente consiste à écrire un HttpModule qui recherche des doubles barres obliques dans l'URI demandé et effectue la redirection.

La méthode la plus simple consiste à insérer du code dans Global.ascx. (cs | vb) pour vérifier l'URI demandé sur BeginRequest .

De toute façon, le code pour effectuer la vérification serait le même.

En pratique:

Il se peut que IIS ou ASP.NET engloutisse le double "/". avant d'avoir la chance de le voir. Si c'est IIS, vous devrez peut-être utiliser un proxy devant IIS. Si c'est ASP.NET, vous pourrez peut-être trouver un Extension ISAPI qui fera le travail pour vous.

Autres options

Vous pouvez soit

  • Scindez la page de sorte que la plupart des ressources individuelles puissent être mises en cache séparément du contenu HTML
  • Informez les utilisateurs qu'ils n'ont pas besoin de mettre la barre oblique supplémentaire.

Autres conseils

Corrigez vos liens!

Il est fort probable que vous voyiez la double barre oblique car vous avez des liens erronés sur votre propre site, codés en dur ou générés par un script. Il est facile de faire cela par erreur dans un script qui concatène http://example.com/ + /page.aspx . Portez une attention particulière à ces types de concaténations!

IIS nettoie les barres obliques supplémentaires. Ce problème ne peut donc être résolu avec aucun code ASP.NET ni HttpModule. Les barres obliques supplémentaires ne sont même pas incluses dans le fichier journal IIS. J'ai testé avec IIS7 et telnet et je ne pouvais pas insérer de barres obliques supplémentaires dans le journal ou ASP.NET.

Je ne suis pas certain de savoir pourquoi la question initiale semble concerner uniquement IE. IE et FF autorisent des barres obliques supplémentaires dans l'URL et semblent les transmettre, bien que je n'aie pas utilisé le sniffing de paquets pour vérifier.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top