2016-08-19 2 views
2

Ich bin nicht sehr vertraut IIS, aber ich versuche, die .php Erweiterung aus Anfrage zu verstecken und ich will es auch funktionieren, wenn Sie einen Schrägstrich hinzufügen.IIS - Serve erweiterungsfreie PHP-Dateien mit oder ohne Schrägstrich

Das unten funktioniert gut, um PHP-Dateien ohne die Erweiterung .php zu dienen, aber es funktioniert nicht mit einem abschließenden Schrägstrich (404).

Was ist der richtige Weg, um dies mit oder ohne Schrägstrich zu ermöglichen?

Antwort

1

Die Lösung für mich war die folgende:

<rule name="Add Trailing Slash" stopProcessing="true"> 
    <match url=".*[^/]$" /> 
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> 
    <add input="{REQUEST_FILENAME}" pattern=".+?\.\w+$" negate="true" /> 
    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
    </conditions> 
    <action type="Redirect" url="{ToLower:{R:0}}/" /> 
</rule> 

<rule name="rewrite php"> 
    <match url="(.*)(/)" /> 
    <conditions logicalGrouping="MatchAll"> 
    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
    <add input="{REQUEST_FILENAME}" negate="true" pattern="(.*).php" /> 
    </conditions> 
    <action type="Rewrite" url="{R:1}.php" /> 
</rule> 

Der erste Abschnitt Kräfte Schrägstriche für alle Nicht-Verzeichnis und nicht-direkte Dateianforderungen Hinter. Beachten Sie die <match url="(.*)(/)" /> im zweiten Block. Dies trennt den nachfolgenden Schrägstrich in eine separate Regex-Vergleichsgruppe. Wenn die Datei mit die PHP-Erweiterung (<action type="Rewrite" url="{R:1}.php" />) angefordert wird, wird der abschließende Schrägstrich von dem URI daher entfernt.

+0

Ich musste diese Zeile entfernen ''. Wie leite ich auch die .php-Datei auf den endgültigen URL-Pfad um? – onebitrocket

+0

@onebitrocket, In meinem Fall war der letzte URL-Pfad der Name der .php-Datei mit Ausnahme der Erweiterung .php. Was versuchst du zu machen? Folgendes: '' teilt dem 'rewrite php'-Block mit, Anfragen direkt auf' .php' zu ignorieren Dateien. –

Verwandte Themen