redirect () Добавляет знак вопроса перед сегментом URI - PullRequest
4 голосов
/ 13 июля 2011

Я недавно включил enable_query_strings в конфигурации CodeIgniter, потому что когда я пытался перенаправить на что-то вроде redirect('/blog?foo=bar'), он удаляет параметры GET, но enable_query_strings исправляет это ..

Проблема в том, что теперь, когда я делаю:

redirect('/blog');

добавляет ? к URL: http://www.domain.com/?/blog

Как это исправить? или как решить основную проблему без включения query_strings?

Ответы [ 4 ]

5 голосов
/ 13 июля 2011

Я бы рекомендовал просто использовать header('location:/blog?foo=bar');.

2 голосов
/ 04 декабря 2014

надеюсь, это поможет вам!нет необходимости менять htaccess, просто измените свой код.

redirect(base_url()."controller_name/function_name");
2 голосов
/ 13 июля 2011

Прочтите о том, что на самом деле делает enable_query_strings, и убедитесь, что это именно то, что вы хотите.Это не на самом деле способ просто включить $_GET.

Запутанно, я знаю.Пожалуйста, проверьте последнюю версию (в настоящее время 2.0.2) и включите параметр конфигурации allow_get_array вместо этого.Это допускает нормальную $_GET поддержку CI.

enable_query_strings была какой-то странной псевдо-экспериментальной функцией, которая по какой-то причине сохраняется в новых версиях (действительно ли люди ее используют?).Это не и никогда не был способ использования $_GET при обычном использовании, который мы все знаем.

РЕДАКТИРОВАТЬ: похоже все помощники URL, и все функции, которыеесли вы включите эту опцию, выясните ваши URL для вас.

Из руководства пользователя на enable_query_strings:

Обратите внимание: если вы используете строки запроса, вам придетсясоздавать собственные URL-адреса, а не использовать помощники URL-адресов (и другие помощники, которые генерируют URL-адреса, например некоторые помощники форм), поскольку они предназначены для работы с URL-адресами на основе сегментов.

Итак, если вы уверен это то, что вы хотите, ответ Карла (с использованием ванильного php's header для перенаправления) в значительной степени ваша единственная надежда.Или вы можете попытаться предоставить полный URL-адрес, видя, что base_url(), вероятно, тоже сейчас не работает (?):

redirect('http://full-urls-are-tedious.com/blog');

Но это может даже не сработать ...

1 голос
/ 13 июля 2011

Почему вы используете строки запроса?Об этом позаботится маршрутизатор CodeIgniters.Вы можете создать более короткий путь к маршрутизатору, если хотите, но основная структура такова:

http://www.somedomain.com/controller/function/param1/param2/...etc

Таким образом, вы можете просто перейти к следующему:

http://www.somedomain.com/blog/foo/bar

или

http://www.somedomain.com/blog/post/3

Вы также можете использовать конфигурацию маршрутизатора, чтобы изменить его на что-то вроде этого:

http://www.somedomain.com/blog/3

Вы действительно должны использовать свои функции CRUD, которые идут с ним.
http://codeigniter.com/user_guide/general/urls.html
http://codeigniter.com/user_guide/general/routing.html
http://codeigniter.com/user_guide/libraries/uri.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...