3 Stimmen

404 Nicht gefunden, wenn URI mit kodierten Parametern angefordert wird

Ich bin mir ziemlich sicher, dass es sich um ein Problem mit der Apache-Konfiguration handelt, da es beim vorherigen Hosting-Anbieter mit der gleichen PHP/MySQL-Konfiguration funktioniert hat. In meiner Anwendung können die Benutzer Fotos löschen, indem sie auf URIs wie diese gehen:

http://example.com/my-account/remove-media/id/9/ret/my-account%252Fedit-album%252Fid%252F1

Der Parameter id ist eine ID eines Fotos, das entfernt werden soll, der Parameter ret ist eine relative URL, an die der Benutzer nach dem Entfernen des Fotos weitergeleitet werden soll, aber nach dem Klicken auf einen solchen Link erhalte ich den Fehler 404 Not Found mit dem Text:

Not Found

The requested URL /public/my-account/remove-media/id/9/ret/my-account/edit-album/id/1 was not found on this server.

Obwohl es verwendet, um auf meinem vorherigen Hosting-Anbieter arbeiten, so dass ich denke, es ist nur einige einfache Apache-Konfiguration Problem?

Und noch etwas: Es gibt eine htaccess-Datei, die das Dokument Root in /public ändert:

RewriteEngine On

RewriteRule ^\.htaccess$ - [F]

RewriteCond %{REQUEST_URI} =""
RewriteRule ^.*$ /public/index.php [NC,L]

RewriteCond %{REQUEST_URI} !^/public/.*$
RewriteRule ^(.*)$ /public/$1

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^.*$ - [NC,L]

RewriteRule ^public/.*$ /public/index.php [NC,L]

Im öffentlichen Ordner befindet sich eine zweite htaccess-Datei für MVC:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /index.php [NC,L]

2voto

Karol J. Piczak Punkte 585

Das liegt wahrscheinlich an AllowEncodedSlashes Richtlinie auf Aus gesetzt wird. Die schlechte Nachricht ist, dass sie auf Serverebene konfiguriert wird, so dass .htaccess nicht ausreicht. Wenn Sie es nicht ändern können, dann denke ich, den Anwendungscode zu ändern, um nicht kodierte Zeichenfolgen zu behandeln, wäre der Weg zu gehen.

.../ret/my-account%252Fedit-album%252Fid%252F1 -> .../ret/my-account/edit-album/id/1

Wenn der /ret/-Teil immer der letzte ist, sollte es kein großes Problem sein (alles nach ret ist Ihr Ziel).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X