A propos du systèmeImpossible de permettre à ces caractères dans l'URL: -%/ # +
Je URL de ce format dans mon projet: -
http://project_name/browse_by_exam/type/tutor_search/keyword/class/new_search/1/search_exam/0/search_subject/0
Où keyword/class
paire moyens de recherche avec mot-clé "class"
Après mon fichier htaccess: -
##AddHandler application/x-httpd-php5 .php
Options Includes +ExecCGI
Options +FollowSymLinks
<IfModule mod_rewrite.c>
RewriteEngine on
############To remove index.php from URL
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
#################################################end of find a class
</IfModule>
J'ai un fichier index.php commun qui exécute pour chaque module dans le projet. Il n'y a qu'une règle de réécriture pour supprimer l'index.php de l'URL (comme vous pouvez le voir ci-dessus).
Je n'utilise aucune règle de réécriture htaccess pour définir le tableau $ _GET. J'ai une fonction d'analyseur d'URL dans PHP à l'intérieur qui fait cela à la place. Pour l'URL de mon exemple, le rendement de l'analyseur: -
Array ([a] => browse_by_exam [type] => tutor_search [keyword] => class [new_search] => 1 [search_exam] => 0 [search_subject] => 0)
J'utilise urlencode() tout en préparant l'URL de recherche et urldecode() tout en lisant l'URL de recherche
Problème
Je suis confronté à des problèmes avec certains caractères de l'URL
Character Response
% 400 - Bad Request - Your browser sent a request that this server could not understand.
/ 404 - Not FOund
\ # + Page does not break but urldecode() removes these characters.
Je souhaite autoriser tous ces caractères. Quel pourrait être le problème? Comment puis-je les autoriser? S'il vous plaît aider Merci, Sandeepan
Mises à jour
Maintenant seulement/caractère est à l'origine (erreur 404 comme avant) la rupture d'URL. Donc, j'ai essayé en supprimant la règle de réécriture htaccess qui cache l'index.php dans l'URL et essayé avec l'URL complète à la place. Pour un terme de recherche class/new
J'ai essayé avec les deux URL suivantes: -
http://project_name/index.php?browse_by_exam/type/tutor_search/keyword/class%2Fnew/new_search/1/search_exam/0/search_subject/0
http://project_name/index.php/browse_by_exam/type/tutor_search/keyword/class%2Fnew/new_search/1/search_exam/0/search_subject/0
Et la première des œuvres, mais le 2ème ne fonctionne pas. Notez le index.php?browse_by_exam
dans le premier. Mais je ne peux pas utiliser la 1ère convention d'URL. Je dois faire/travailler avec index.php caché.S'il vous plaît aider
Merci encore Sandeepan
Edition (Résolu)
Considérant la réponse de Bobince à mon autre question
urlencoded Forward slash is breaking URL , je pense qu'il est préférable d'avoir des URL comme ceci: - http://project_name/browse_by_exam?type/tutor_search/keyword/class %2Fnew/new_search/1/search_exam/0/search_subject/0
De cette façon, je me débarrasse de la diffi culté de lisibilité causée par ¶m1=value1¶m2=value2
convention et également en mesure de permettre des barres obliques dans la partie chaîne de requête en utilisant ?
Je veux éviter AllowEncodedSlashes parce Bobince dit 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.
Merci beaucoup Tim, cela a immédiatement résolu le problème du caractère%. Et j'ai corrigé mon code pour que tous les autres personnages ne soient pas supprimés. Mais le caractère/est encore briser mon URL comme avant (erreur 404). Veuillez vérifier la section Mises à jour et voir si vous pouvez aider. –
J'ai fait quelques mises à jour à ma réponse; cela ne résout pas le problème que vous décrivez, mais je ne comprends pas pourquoi cela doit être fait comme vous le décrivez. Je vais voir s'il y a un moyen de le faire fonctionner comme vous voulez, mais je ne suis pas sûr que ce soit possible (à moins que vous ne passiez vos règles de réécriture dans 'httpd.conf' ou dans quelque chose, où ça semble aller). –
Je veux garder l'index.php caché, comme il l'a toujours été dans notre projet. Je suppose que cela cache l'information sur laquelle le codage est fait (php dans mon cas). Vérifiez ma question éditée Vraiment apprécier votre attitude d'aide Merci, Sandeepan –