über das SystemUrlencoded Schrägstrich bricht URL
ich URLs dieses Format in meinem Projekt habe: -
http://project_name/browse_by_exam/type/tutor_search/keyword/class/new_search/1/search_exam/0/search_subject/0
Wo Stichwort/Klasse Paar bedeutet Suche mit "Klasse" Schlüsselwort.
Ich habe eine gemeinsame Datei index.php, die für jedes Modul im Projekt ausgeführt wird. Es gibt nur eine Rewrite-Regel die index.php von URL zu entfernen: -
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,QSA]
Ich verwende urlencode(), während die Suche URL und urldecode Herstellung von(), während der Such-URL zu lesen.
Problem
Nur der Schrägstrich bricht URLs Bewirken, dass 404-Seite nicht Fehler gefunden. Zum Beispiel, wenn ich one/two
die URL zu suchen ist
http://project_name/browse_by_exam/type/tutor_search/keyword/one%2Ftwo/new_search/1/search_exam/0/search_subject/0/page_sort/
Wie kann ich dieses Problem beheben? Ich muss index.php in der URL versteckt halten. Ansonsten wurde, wenn diese nicht benötigt werden, würde es mit Schrägstrich kein Problem gewesen, und ich konnte diese URL verwendet haben: -
http://project_name/index.php?browse_by_exam/type/tutor_search/keyword/one
%2Ftwo/new_search/1/search_exam/0/search_subject/0
Ich fühle mich ist es am besten haben URLs wie folgt: - 'http: // project_name/browse_by_exam? Type/tutor_search/keyword/class% 2Fneu/new_search/1/search_exam/0/search_subject/0' So werde ich das schwierige los y der Lesbarkeit verursacht durch & param1 = value1 & param2 = value2 Konvention und ich bin auch in der Lage, Schrägstriche zu erlauben (jetzt im Query String Teil mit '?') Ich würde AllowEncodedSlashes vermeiden, weil Bobince sagte 'Auch einige Werkzeuge oder Spinnen könnten verwirrt davon. Obwohl% 2F zu/in einem Pfadteil gemäß dem Standard korrekt ist, vermeidet das meiste des Webs es. " URL .htaccess URL-Routing –
Sie können% 2F verwenden, wenn Verwendung auf diese Weise? Param1 = Wert1 & Param2 = Wert% 2FWert Wenn Sie jedoch /param1 = Wert1/Param2 = Wert% 2FWert verwenden, wird ein Fehler ausgegeben. – Ahmad
Zugehörig: [Ist ein Schrägstrich ("/") einem codierten Schrägstrich ("% 2F") im Pfadabschnitt einer HTTP-URL] (http://stackoverflow.com/q/1957115/95735) –