Suchen und ersetzen in apache htaccess eine RewriteRule
Ich würde grundsätzlich gerne
/path/file+name+with+plusses.mp3
umschreiben zu
/path/file name with plusses.mp3
In meinem Fall wordpress ist das abfangen der Anforderung und gibt eine 404. Aber die Datei ist ja vorhanden.
Angesichts der Einschränkungen der regex in mod_rewrite Umsetzung, die ich noch nicht gesehen haben, eine einfache Möglichkeit, dies zu tun.
- Für andere mit einem ähnlichen problem, Sie mit einem link auf solche Dateien mit Prozent-codierte Zeichen, z.B. dass link sollte
/path/file%20name%20with%20plusses.mp3
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, diese Regel:
continue
in Programmiersprachen), bis es keine plus-Zeichen Links. Und für mich ist es wie ein Zauber funktioniert.RewriteRule: cannot compile regular expression '^([^+]*)\\(.*)' [crit] Memory allocation failed, aborting process.
.[^…]
, also in deinem Fall[^\\]*
.Gut, ich habe eine Lösung, aber ich weiß nicht wirklich, wie es...
Dies ersetzt alle Unterstriche durch Bindestriche, und leitet die mit einer 301-status-code,
das ist der 'Moved permanently'. (natürlich können Sie es verwenden, um zu ersetzen Sie alle anderen chars auch)
Also, es sollte die erste Regel (für die ex-im .htaccess-Datei), da die erste Zeile ist eine Schleife eigentlich, das geht durch alle Regeln wieder (weil der das N-flag)
Erklärung:
Erste Zeile:
'redirect/form' : der Basis-Pfad oder alles, was Sie wollen umleiten. Es sollte aufgenommen werden, im zweiten Teil, entsprechen zu können, es beim nächsten Durchlauf der Schleife
ersten Teil: 'ersetzen (nicht Unterstrich) gefolgt von einem Unterstrich, gefolgt von (etwas)" ein capture der erste und Letzte Teil für die spätere Verwendung
zweiten Teil: fügen Sie text, was wahrscheinlich nicht in Ihre urls vor der erfassten ersten Teil, dann fügen Sie den ersten Teil, dann der Bindestrich, dann wird der zweite Teil
flags:
N : danach gehen Sie wieder vor, führen Sie alle rewrite-Regeln wieder, aber mit der veränderten url
L : wenn es war ein Spiel, stoppen Sie hier (die 2 Fahnen zusammen eigentlich das Ding, was man erwarten würde von der ersten.)
Zweiten Zeile
Bedingung für die nächste Regel: ausführen der nächsten Regel nur, wenn die zuvor definierte Zeichenfolge finden Sie in der request-uri, mindestens ein mal
Dritte Zeile
Ersten Teil: match und capture alle vorkommen von die komische Zeichenfolge, und alles aufzuzeichnen, was
nachdem es
Zweiten Teil: fügen Sie den zweiten Teil auf jeden Weg, den wir umleiten wollen (und vergessen Sie die lustigen string)
Flags:
NC: der groß-und Kleinschreibung
QSA: append query-string
R=301: Umleitung mit dauerhaft verschoben
Ich bin nicht davon überzeugt, dass mod_rewrite lösen dieses problem für Sie als
+
ist eine durchaus zulässige query-string-Charakter. Wenn Sie WordPress installiert haben, in der Wurzel Ihrer website, kann es sinnvoll sein, die Behandlung, die Teil der url (PathInfo) als query-string-parameter.Habe ich eine bessere - mit PHP :
.htaccess:
./special_redirect.php
Diese oben meistert mit deutschen umlaut chars, aber es ist anpassungsfähig für die einfacheren Fälle von "_" auf "-" und so weiter...