2016-04-18 2 views
0

Я работаю над проектом на основе laravel 4.2, и у меня возникла странная проблема.Laravel: URL-адреса с закодированными символами генерируют исключение 404

Проблема

У меня есть URL, например, http://example.com/events/eventname/registration#get_register

выше URL работает отлично, но когда специальные символы закодированы, то я закончил с следующим URL-адрес

http://example.com/events/eventname/registration%23get_register

и этот закодированный URL-адрес дает мне исключение 404 laravel.

Детали:

Я заметил эту проблему, когда я послал ссылку проекта коллеге через Skype и IOS версии Skype закодировать URL-адресов в сообщении. Поэтому, когда мой коллега открыл эту ссылку из Skype, он получил исключение.

Update

Мой маршрут Код

//Free Registration 
Route::any('events/{event_url}/registration', '[email protected]_step1'); 
+0

Отправьте код для своих маршрутов – Rob

+0

@Rob, я добавил код маршрута выше. –

ответ

1

Основная проблема заключается в том, что хэш-теги в URL, не отосланы на сервер. Они используются браузером. Поэтому, когда вы используете http://example/#hash, сервер будет видеть только http://example/. Когда хэш кодируется %23, сервер получает полный URL-адрес. Если вы хотите, чтобы маршруты laravel распознавали URL-адрес с помощью %23, вы должны соответствовать ему и обрабатывать его или сопоставлять с ним и перенаправлять. Например ...

Route::get('events/{event_url}/registration/*', '[email protected]_step1'); 

или ...

Route::get('events/{event_url}/registration{hash?}', '[email protected]_step1'); 

в зависимости, если вам нужно, чтобы захватить параметр или нет.

+0

Спасибо .... @Rob –

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