2011-01-19 3 views
0

У меня возникли проблемы с маршрутизацией в воспламенителе кода. Тем не менее, у меня есть основы.Проблема с маршрутизацией CodeIgniter при использовании: любая

$route['user/authorize'] = "user/asdf"; 

Эта фиктивная линия работает нормально. Это не так:

$route['user/authorize?code=:any'] = "user/asdf"; 

и особенно

$route['user/authorize?code=:any'] = "user/authorize/$1"; 

Я уже изменил переменную $config['permitted_uri_chars'] в пустую строку (разрешить все).

Я также пытался использовать (: any) с помощью скобок. Я предположил, что это опечатка в руководстве, так как (: num) также использует скобки. Без эффекта.

У меня нет идей. Кто угодно?

BTW переменного кода доступ Facebook маркер и выглядеть примерно так:

2.TOCElrzcR5MYz_J8O67hWA__.3600.1295467200-17044424246|4FPbz0N-pXqGWYR81PWGPTY06A4 

Не уверен, если это уместно, мой .htacces файл:

RewriteEngine on 
RewriteCond $1 !^(index\.php|css|images) 
RewriteRule ^(.*)$ /website/index.php/$1 [L] 

ответ

0

Я считаю, нужно добавить следующие строки в вашей конфигурации:

$config['enable_query_strings'] = TRUE; 
$config['uri_protocol'] = "QUERY_STRING"; 

Source

+0

Но я использую «хорошую структуру URL». Если я включу строки запроса, я потеряю это (это эксклюзивный выбор, не может быть и того и другого). Мог бы быть моим последним прибежищем, хотя. Надеюсь, у кого-то еще есть идея. Я также исследую добавление строки в мои .htacces .... – Erik

+0

Извините, вы правы, это эксклюзивно. Кроме того, вы могли бы, вероятно, $ route ['user/authorize'] = 'user/authorize' и выполнять свою собственную маршрутизацию внутри метода авторизации. – joelcox

1

Поскольку структура Codeigniter является:

контроллер/метод/Params

Я предполагаю, что:

Пользователь/авторизовать

Ваш контроллер/метод.

Теперь

$ маршрут [ 'пользователь/авторизовать код =: любой'] = "пользователь/ASDF";

Должно быть:

$ маршрут [ 'пользователь/разрешить /: любой'] = "пользователь/ASDF";

где

функция авторизированным ($ код = NULL) { эхо $ код; }

выход будет такой же, как

function authorize(){ $code = $_GET['code']; }

Так Oldskool PHP вы пишете: ninja.php код = что-то

в CI является третьим сегментом.


/user/authorize/TOCElrzcR5MYz_J8O67hWA__.3600.1295467200-17044424246 | 4FPbz0N-pXqGWYR81PWGPTY06A4

равно

ninja.php код = TOCElrzcR5MYz_J8O67hWA __ 3600.1295467200-17044424246 |?. 4FPbz0N-pXqGWYR81PWGPTY06A4

, как описано в начале.

+0

htaccess в порядке! – flakerimi

+0

Спасибо за ответ. Я не знаю, что вы имеете в виду. Но проблема все еще остается. Я заметил, что перенаправление работает, как вы говорите. Но: любой не будет работать, если в нем есть знак вопроса (который есть). Я тестировал с обычной случайной строкой, и это работает нормально. Проблема в том, что я не могу выбрать знак вопроса. Facebook добавляет его в мой URL. Я указываю URL, facebook добавляет параметр? Code = blah. Итак, я приближаюсь ... – Erik

+0

Можете ли вы попробовать: $ config ['enable_query_strings'] = TRUE; $ config ['uri_protocol'] = "PATH_INFO"; Вот как я использую оба, когда должен. и echo $ _GET ['code']; – flakerimi

0
$config['uri_protocol'] = "PATH_INFO"; 

Оставьте все остальное по умолчанию.

Смежные вопросы