Cakephp 3.1 - Как перенаправить на основе значений строки запроса?

Недавно мы обновили наш сайт с чистого php до cakephp 3, и у нас возникли проблемы с перенаправлением URL-адресов, имеющих параметры, на новый URL-адрес.

Например этот редирект работает нормально

$routes->redirect('/webcast.php', '/webcast', ['status' => 302]);

Но если есть параметры, это не работает

$routes->redirect('/webcast.php?id=100', '/webcast', ['status' => 302]);

Есть идеи?

Благодарю.

1 ответ

Решение

Маршрутизатор не поддерживает сопоставление в строках запроса, URL-адрес, передаваемый маршрутизатору при проверке совпадающего маршрута, больше не будет иметь никаких значений строки запроса.

Хотя можно было бы обойти это, используя собственный фильтр диспетчера маршрутизации, пользовательский / расширенный Router класс и пользовательский / расширенный RouteCollection Класс, это кажется слишком большой работой для чего-то, что может быть легко определено как, например, правило перезаписи на уровне сервера.

апаш mod_rewrite пример:

RewriteCond %{QUERY_STRING} ^id=100$
RewriteRule ^webcast\.php$ /webcast? [L,R=302]
Другие вопросы по тегам