【问题标题】:Symfony2 routingSymfony2 路由
【发布时间】:2011-12-21 20:10:23
【问题描述】:

我有一个 symfony2 项目,我想创建一个路由(前缀),它指向我的旧项目,它位于一个文件夹中(它不是 MVC 项目)。我决定在 vendor 内创建文件夹,名称为我的旧项目 (symfony/vendor/myOldProject)。

所以规则是:

  • http://symfony/oldproject/ -> 指向文件夹或特定文件 喜欢 (index.php) "symfony/vendor/myOldProject"
  • 在 oldproject/ 之后传递所有流量(所有 GET 参数)
  • 没有前缀 oldproject 的所有东西都将使用标准的 symfony2 路由

基本上代替(routing.yml):

旧项目主页:

pattern:  /oldproject/
defaults: { _controller: AcmeDemoBundle:Default:index }

用途:

旧项目主页:

pattern:  /project/
defaults: { /vendor/myOldProject }

怎么做?

【问题讨论】:

    标签: symfony


    【解决方案1】:

    我认为使用 mod_rewrite 规则更容易。 哎呀,如果您小心代码文件夹的访问规则,只需将旧项目存储在 web 下的单独文件夹中(即 /web/project/)就可以解决问题

    但如果你绝对坚持使用 symfony2 解决方案,那么你可能需要在旧项目和新 symfony2 之间编写一个桥接包。

    绝对没有办法像你在示例中描述的那样。

    【讨论】:

    • 谢谢 Inori,你说得对,我需要使用 mod_rewrite。我将在下面的答案中提供更多详细信息
    【解决方案2】:

    我认为这个解决方案将帮助那些想要使用 symfony2 作为主项目并将旧的现有项目文件保存在一个单独的文件夹中并允许所有获取参数的流量。

    我已将 .htaccess 添加到 /web/ 中的 symfony2,其中包含:

    重写引擎开启

    RewriteCond %{REQUEST_FILENAME} !-f

    重写规则 ^(?:(?!oldproject).)*$ app_dev.php [QSA,L]

    我把我的旧项目放在 /web/oldproject/ 中

    这意味着我可以对每个流量使用 symfony2:

    http://newsymfony/

    对于我的旧项目,我可以使用:

    http://newsymfony/oldproject/anyfile.php?annyArgument=anyValue

    我希望这将帮助那些想要从旧项目迁移到基于 symfony2 的新项目的人

    感谢您的帮助

    【讨论】:

      猜你喜欢
      • 2011-07-18
      • 1970-01-01
      • 1970-01-01
      • 2014-09-17
      • 2016-04-13
      • 1970-01-01
      • 2014-11-03
      • 2015-08-24
      • 2015-05-26
      相关资源
      最近更新 更多