Über das System
Ich habe URLs dieses Formats in meinem Projekt: -
http://project_name/browse_by_exam/type/tutor_search/keyword/class/new_search/1/search_exam/0/search_subject/0
Wobei Schlüsselwort / Klassenpaar die Suche mit dem Schlüsselwort "Klasse" bedeutet.
Ich habe eine gemeinsame index.php-Datei, die für jedes Modul im Projekt ausgeführt wird. Es gibt nur eine Umschreiberegel, um die index.php von der 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 () beim Vorbereiten der Such-URL und urldecode () beim Lesen der Such-URL.
Problem
Nur das Schrägstrichzeichen unterbricht URLs, wodurch ein Fehler bei 404 Seiten nicht gefunden wird. Zum Beispiel, wenn ich suche, ist one/two
die URL
http://project_name/browse_by_exam/type/tutor_search/keyword/one%2Ftwo/new_search/1/search_exam/0/search_subject/0/page_sort/
Wie behebe ich das? Ich muss index.php in der URL versteckt halten. Wenn dies nicht erforderlich gewesen wäre, hätte es kein Problem mit dem Schrägstrich gegeben, und ich hätte diese URL verwenden können: -
http://project_name/index.php?browse_by_exam/type/tutor_search/keyword/one
%2Ftwo/new_search/1/search_exam/0/search_subject/0
http://project_name/browse_by_exam?type/tutor_search/keyword/class %2Fnew/new_search/1/search_exam/0/search_subject/0
diese Weise werde ich die Lesbarkeitsschwierigkeiten beseitigen, die durch die Konvention & param1 = value1 & param2 = value2 verursacht werden, und ich kann auch Schrägstriche zulassen (jetzt im Teil der Abfragezeichenfolge mit?
) I. würde AllowEncodedSlashes vermeiden, weil Bobince sagte,Also some tools or spiders might get confused by it. Although %2F to mean / in a path part is correct as per the standard, most of the web avoids it.
URL .htaccess URL-Routing