Gibt es eine IIS-Einstellung von zusätzlichem ‚/‘ Zeichen in einer angeforderten URL loswerden?

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

Frage

Das allgemeine Problem:

Wir haben Urls unseren IIS Web-Server kommen formatiert wie:

  

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

Wir sehen auch, dass Urls wie diese kommen in:

  

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

Wir möchten, dass zusätzlichen Pfad Zeichen, um loszuwerden, weil, wenn die User-Agent Internet Explorer ist, wird dies als zwei verschiedene Seiten zu lösen ist, und somit das Herunterladen der Inhalte zweimal, wenn es aus einem Cache aufgelöst werden soll.

Ich bin nicht sicher, ob dies ein Problem ist, mit so etwas wie ein URL-Rewriting-Modul gelöst zu werden, oder wenn es eine Konfigurationseinstellung.

War es hilfreich?

Lösung

Ich denke, das Problem ist mit IE und nicht IIS.

Umschreiben

URL der Regel bezieht sich auf den Prozess der Zuordnung eines URL von http://example/shoes/clarkes auf dem Server http://example/shoes.aspx?maker=clarkes so dass der Browser über sie nicht kennt.

Was Sie tun müssen, ist den Browser-Redirect von http://www.server.com//page.aspx ein http://www.server.com/page.aspx mit = "http://www.webconfs.com/how-to-redirect-a-webpage.php" rel = "nofollow noreferrer "title =" Details von 301" > 301 Http-Response-Code .

In der Theorie:

Wie Sie werden mit ASP.NET scheinen, die transparent Art und Weise, dies zu tun wäre, ein Httpmodule , dass die Kontrollen für doppelte Schrägstriche in der gewünschten URI und tut die Umleitung.

Der einfachste Weg, es zu tun ist, etwas Code in Global.ascx zu setzen (cs | vb). Die angeforderte URI auf Beginrequest .

So oder so, der Code die Kontrolle zu tun, wäre das gleiche.

In der Praxis:

Es könnte sein, dass IIS oder ASP.NET schluckt die doppelten „/“, bevor Sie die Chance, um zu sehen, es zu bekommen. Wenn es IIS ist dann könnten Sie einen Proxy vor IIS verwenden. Wenn es ASP.NET ist dann könnten Sie in der Lage sein, ein ISAPI-Erweiterung , die die Arbeit für Sie tun.

Andere Optionen

Sie können entweder

  • die Seite Split, so dass die meisten der einzelnen Ressourcen getrennt von der HTML-Inhalte zwischengespeichert werden können
  • Educate Benutzer, die sie nicht brauchen, in den zusätzlichen Schrägstrich zu setzen.

Andere Tipps

Fix Ihre Links!

Mehr als wahrscheinlich, dass Sie den doppelten Schrägstrich sehen, weil Sie fehlerhafte Links auf Ihrer eigenen Website haben, entweder hart codiert oder Skript generiert. Es ist einfach, das versehentlich in einem Skript zu tun, die http://example.com/ + /page.aspx verkettet. Achten Sie auf diese Art von Verkettungen!

IIS reinigt zusätzliche Schrägstriche und so kann dies nicht mit ASP.NET-Code oder Httpmodule angesprochen werden. Die zusätzlichen Schrägstriche es nicht einmal die IIS-Protokolldatei machen in. Getestet habe ich IIS7 und telnet und nicht zusätzliche Schrägstriche in das Protokoll oder ASP.NET erhalten könnte.

Ich bin nicht sicher, warum die ursprüngliche Frage scheint nur IE einzubeziehen. IE und FF erlauben zusätzliche Schrägstriche in der URL und scheinen sie zu übertragen, obwohl ich nicht verwenden Paket zu überprüfen Sniffing.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top