IIS Kräfte Schrägstrich sogar mit URL-Rewrite, um es zu entfernen
Ich bin nicht in der Lage entfernen Sie den nachgestellten Schrägstrich meiner Website-URLs auch mit dem URL-rewrite aus: http://ruslany.net/2009/04/10-url-rewriting-tips-and-tricks/.
Wirklich frustrierend, da sollte es so einfach sein, doch meine versuche ergaben keine Ergebnisse.
Ich ging sogar so weit, zu erstellen Sie ein test-Verzeichnis und hinzugefügte Datei namens desktops.aspx und und sub-Ordner mit dem Namen desktops.
ohne das Unterverzeichnis "/test/desktops" lädt Ordnung, da ich die Standard-Dokument zu betrachten desktops.aspx.
mit einem Unterordner erstellt und noch immer auf "/test/desktops", es zwingt der Schrägstrich und sieht an der sub-Verzeichnis.
Warum IIS tut dies seit Ihrer soll suchen Sie die Datei zuerst, dann die sub-Verzeichnis korrekt? Gibt es irgendwelche Einstellungen auf der server-Seite, würde die Kraft wieder in die slash?
URL-Rewrite-Snippet:
<rule name="SEO - Remove trailing slash" stopProcessing="false">
<match url="(.+)/$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_METHOD}" pattern="GET" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
<action type="Rewrite" url="_{R:1}" />
</rule>
jede Hilfe wäre willkommen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwendung einer Aktion vom Typ
Rewrite
aber Sie wollen eineRedirect
.Ändern Sie Ihre Konfiguration an:
Müssen Sie auch ändern
url="(.+)/$"
zuurl="(.*)/$"
.TIPP:
Am besten testen Sie Ihr Muster ist die Verwendung der IIS-test-pattern-tool.
An der Wurzel Ihrer website -> URL-Rewrite -> Erstellen Sie eine leere Regel -> klicken Sie auf test pattern:
(.*)/$
als Muster (siehe meine aktualisierte Antwort). Ich sollte haben folgte meiner eigenen Ratschläge... 🙂<conditions>...</conditions>
)?/test/desktops/
es geht um/test/desktops
). Was ist, wenn Sie versuchen, um zu sehen, was passiert mit dem Failed Request Tracing?test/desktops
so dass es nicht trigger die Regel. Der Regel nur entfernt die/
am Ende, so dass, wenn Sie die Anfragetest/desktops/
Sie werden weitergeleitet zutest/desktops
.CONDITION EVALUATION
RückkehrSucceeded false
. Können Sie erneut versuchen, ohne die Bedingungen?test/desktops
funktioniert es? Wenn ja, entfernen Sie bitte die Bedingungen und bieten das neue full log, wenn Sie versuchen, zu erreichentest/desktops/
.<defaultDocument>
in Ihremweb.config
- Datei (iis.net/configreference/system.webserver/defaultdocument)Das problem, das ich hatte, waren links zu PDF-Dateien mit nachgestellte Schrägstriche, so was funktioniert bei mir in Windows Server 2008 R2 mit IIS 6.1:
Klicken Sie auf die website, die Bedürfnisse der Herrschaft und in der
Features
Ansicht öffnenURL Rewrite
und dann auf dieActions
Abschnitt (rechter Bereich) wählen SieAdd Rule(s)
und wählen SieAppend or Remove the trailing slash symbol
. Im nächsten Fenster auf die drop-down wählen Sieremove if exists
.Hoffe, das hilft.
Ich hatte das gleiche problem und hier ist, was ich gefunden habe.
Meine Absicht war, diese Regel zu verwenden, die auf einer MVC-website, aber ich wollte nicht testen, in der Produktion, so getestet habe ich die Regel auf eine Seite schon eingerichtet, die passiert werden web-Formulare asp.net.
Ich hatte das gleiche problem wie du. Navigation http://www.example.com/test umgeleitet http://www.example.com/test/auch mit die Regel in Kraft.
So bemerkte ich die Bedingungen um zu überprüfen, ob die angeforderte url ist eine Datei oder ein Verzeichnis, und ich entfernte Sie.
Jetzt http://www.example.com/test/umgeleitet http://www.example.com/test. Yay! Nein. IIS wird automatisch Hinzugefügt, ein weiterer redirect zurück http://www.example.com/test/was in eine redirect-Schleife. Boo.
Gefunden habe ich dann diesen Artikel https://support.microsoft.com/en-us/kb/298408, das bezieht sich auf IIS 6 ist aber natürlich immer noch ein Thema.
So, denn ich bin in einer asp.net web forms-Seite, in meinem Fall /test ist ein physisches Verzeichnis, und es ist etwas in IIS, die Kräfte der nachgestellte Schrägstrich für Verzeichnisse. Und tut mir Leid zu sagen, aber ich konnte nicht finden einen Weg, um leicht, es auszuschalten.
Jedoch! Meine Anforderung war für MVC und konfigurierten Routen, das sind KEINE Verzeichnisse. Also versuchte ich es wieder auf einer MVC-website und die Weiterleitung zu entfernen, wird der trailing-slash funktionierte perfekt.
Den ich in der Regel endete mit:
Hoffe, das hilft!