Я создаю приложение PHP с использованием CodeIgniter. Это похоже на Let Me Google That For You
, когда вы записываете предложение в текстовое поле ввода, нажимаете кнопку «Отправить», и вы переходите по URL, который отображает результат. Я хотел, чтобы URL был удобен для редактирования и был относительно простым. Я справился с маршрутизацией URL CodeIgniter, поэтому сейчас мои URL могут выглядеть примерно так:
http://website.com/?q=this+is+a+normal+url
Проблема сейчас заключается в том, что предложение содержит специальный символ, такой как знак вопроса или обратную косую черту. Обе эти штуки с моими текущими .htaccess
правилами переписывания, и это происходит даже тогда, когда кодируется символ.
http://website.com/?q=this+is+a+normal+url? OR
http://website.com/?q=this+is+a+normal+url%3F
Что работает, так это двойное кодирование. Например, если я возьму знак вопроса и закодирую его в %253F
(где символ? Закодирован в% 3F, а знак% - в% 25). Этот URL работает правильно.
http://website.com/?q=this+is+a+normal+url%253F
Кто-нибудь имеет представление о том, что я могу здесь сделать? Есть ли умный способ двойного кодирования ввода? Могу ли я написать .htaccess
правило переписывания, чтобы обойти это? Я в недоумении здесь. Вот правила переписывания, которые я сейчас использую для всех.
RewriteEngine on
RewriteCond %{QUERY_STRING} ^q=(.*)$
RewriteRule ^(.*)$ /index.php/app/create/%{QUERY_STRING}? [L]
Примечание : КодIgniter работает так, как будто он настроил URL index/application/function/parameter
. Я передаю функции полную строку запроса прямо сейчас.