Bereinigen Sie URLs mit Mod Rewrite und URL-codierten Zeichen. Verursachen Sie 404?

Bereinigen Sie URLs mit Mod Rewrite und URL-codierten Zeichen. Verursachen Sie 404?

Ich habe eine Website, die mod_rewriteeinige saubere URLs und benutzerdefinierte 404-Seiten erhält. Meine .htaccessDatei sieht folgendermaßen aus:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?clean_url=$1 [QSA,L]
</IfModule>

Was mich verwirrt ist, dass der Server eine 404-Fehlermeldung zu erzwingen scheint, wenn die URL eine %2F(URL-codierte ) enthält. Das wäre /beispielsweise ein normaler Artikel, der dann aber eine vom Server generierte 404-Seite ausgibt. (Nicht die benutzerdefinierte 404-Seite)http://example.com/category/articlehttp://example.com/category%2farticle

Damit hätte ich nicht gerechnet... warum passiert das? Gibt es einen Weg, das zu umgehen?

Antwort1

Die URLs http://example.com/category/articleund http://example.com/category%2farticlesind nicht gleich.RFC 2616 §3.2.3, reservierte Zeichen haben eine besondere Bedeutung (was letztlich der Sinn des URL-Escapens ist). RFC 2396 §2.2Listen sind /als solches reservierte Zeichen. Begrenzt im Kontext von HTTP-URLs /Pfadelemente, während %2fes sich um einen wörtlichen Schrägstrich handelt.

In ApacheAllowEncodedSlashes Onwürde verhindern, dass die Anfrage sofort mit einer 404 abgelehnt wird.

verwandte Informationen