Закодированный слеш разрывает маршрут в Cakephp - PullRequest
3 голосов
/ 01 сентября 2011

У меня есть следующий маршрут в мой route.php

Router::connect('/:lang/detail/:id/*', array('controller' => 'main', 'action' => 'detail'), array('lang' => '[a-z]{3}'));

, и следующий URL работает

http://www.cyclistsroadmap.com/eng/detail/1380/Ferguson++119th/

Носледующие:закодированный слэш там.Это то, что я делаю неправильно, или это настоящая ошибка в Cakephp?

Ответы [ 2 ]

5 голосов
/ 06 сентября 2011

Убедитесь, что вы включили директиву AllowEncodedSlashes в Apache:

AllowEncodedSlashes on

Более подробную информацию можно найти здесь:

http://httpd.apache.org/docs/2.2/mod/core.html#allowencodedslashes

3 голосов
/ 28 ноября 2012

Хотя это может не относиться к вашей ситуации, у меня была похожая проблема, которую я исправил следующим образом.

Мы сохраняем URL для дерева, например, набор страниц, путь которого обновляется при сохранении,Пример:

Name          | Path
Home          | /
- Support     | /support
-- Legal      | /support/legal
-- Privacy    | /support/privacy
- About       | /about
-- Who We Are | /about/who-we-are

Затем мы передаем путь в качестве аргумента нашему контроллеру.Обычные методы Router :: * будут кодировать косые черты в них.Вместо этого мы делаем следующее:

$redirect = explode('/', $path);
$redirect['controller'] = 'my_controller';
$redirect['action']     = 'my_action';
$this->redirect($redirect);

Этот тортик перекодирует косые черты для меня.Затем вы можете собрать их в контроллере

$path = implode('/', $this->request->params['pass']);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...