Je construis une application PHP en utilisant CodeIgniter. Il est similaire à Let Me Google That For You
où vous écrivez une phrase dans une zone de saisie de texte, cliquez sur soumettre, et vous êtes redirigé vers une URL qui affiche le résultat. Je voulais que l'URL soit modifiable par l'homme et relativement simple. J'ai eu dans le routage d'URL CodeIgniter, donc en ce moment mes URL peuvent ressembler à ceci:Problème avec l'encodage des caractères spéciaux pour l'URL via la saisie de texte
http://website.com/?q=this+is+a+normal+url
Le problème est en ce moment quand la phrase contient un caractère spécial comme un point d'interrogation, ou une barre oblique inverse. Ces deux désordre avec mes règles de réécriture actuelles, et cela arrive même lorsque le personnage est encodé.
http://website.com/?q=this+is+a+normal+url? OR
http://website.com/?q=this+is+a+normal+url%3F
Qu'est-ce que le travail est le double-codage. Par exemple, si je prends le point d'interrogation, et l'encoder à %253F
(où le? Est codé à% 3F et le signe% est codé à% 25). Cette URL fonctionne correctement.
http://website.com/?q=this+is+a+normal+url%253F
Quelqu'un at-il une idée de ce que je peux faire ici? Y a-t-il une façon intelligente de doubler l'encodage de l'entrée? Puis-je écrire une règle de réécriture .htaccess
pour contourner ce problème? Je suis à perte ici. Voici les règles de réécriture que j'utilise actuellement pour tout le monde.
RewriteEngine on
RewriteCond %{QUERY_STRING} ^q=(.*)$
RewriteRule ^(.*)$ /index.php/app/create/%{QUERY_STRING}? [L]
Remarque: La façon dont fonctionne CodeIgniter est qu'ils ont une configuration d'URL index/application/function/parameter
. J'alimente la fonction la chaîne de requête complète en ce moment.
Pouvez-vous ajouter votre règle de réécriture à la question? – Greg
Bien sûr, le message original a été modifié pour inclure les règles de réécriture. –
Est-il nécessaire de rediriger la demande de cette façon? – Gumbo