Как мне перенаправить URL, используя строку запроса в Symfony2? - PullRequest
5 голосов
/ 08 сентября 2011

Я переписываю старый проект, используя Symfony2, чтобы я мог опробовать фреймворк. У меня есть URL, которые будут иметь вид:

/profile/{id}

таким хитрым способом, как Symfony2 делает это. Тем не менее, та же страница была первоначально найдена, выполнив:

/profile.php?id=12345

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

/profile.php?id={id}

но это не сработало. Как я могу настроить этот маршрут?

Последующие действия: Я не хочу делать «все» (потому что это не интуитивно для меня, поэтому я боюсь будущих ошибок), и я предпочел бы не делать это через htaccess по той же причине. Я думаю, что лучший вариант - это сопоставить «/profile.php», а затем в контроллере, проверить, что «id» существует в строке запроса и перенаправить соответственно. Если это не так, я буду перенаправлять на 404.

1 Ответ

3 голосов
/ 08 сентября 2011

Здесь я вижу два варианта:

  1. Вы отображаете свою старую схему (/profile.php?id=54321) на новую (/ profile / 54321), используя mod_rewrite (если вы используете Apache).

  2. Вы пишете картограф в Symfony. Это означает, что в конце списка маршрутов вы указываете шаблон, который будет перехватывать все, что еще не перехвачено:


whatever:
  pattern: /{whatever}
  defaults: { _controller: CoreBundle:Default:whatever }
  requirements:
    whatever: .+

Для (2) вам придется проверить, что объект Request предлагает вам для запросов (например, getQueryString ()), b / c. Я не уверен, возможно ли иметь что-то вроде? Xyz, сопоставляемого в маршрут.

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