如何使用Symfony2中的查询字符串路由URL?

时间:2011-09-08 05:49:10

标签: php symfony

我正在使用Symfony2重写一个旧项目,所以我可以尝试使用该框架。我的网址形式为:

/profile/{id}

以Symfony2做的时髦方式。但是,最初通过以下方式找到了同一页:

/profile.php?id=12345

因此,如果某人有旧网址,我想重定向这些链接。问题是,我不知道如何捕捉这种性质的路线。我试过了

/profile.php?id={id}

但这似乎不起作用。我该如何设置这条路线?

跟进:我不想做“全能”(因为它对我来说不直观,所以我担心未来的错误),我宁愿不通过htaccess出于同样的原因。我认为最好的选择是匹配“/profile.php”然后在控制器中,检查查询字符串中是否存在“id”并相应地重定向。如果没有,我将重定向到404。

1 个答案:

答案 0 :(得分:3)

我在这里看到两个选项:

  1. 使用mod_rewrite将旧模式(/profile.php?id=54321)映射到新模式(/ profile / 54321)(如果您使用Apache)。

  2. 您在Symfony中编写了一个映射器。这意味着在您的路线列表的末尾,您指定的模式将只捕获尚未捕获的所有内容:


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

    对于(2)你必须检查Request-object为查询提供什么(比如getQueryString()),b / c我不确定是否有可能有类似的东西?xyz匹配在一个路由。