【问题标题】:Symfony2 routing no matchSymfony2 路由不匹配
【发布时间】:2015-12-19 06:47:32
【问题描述】:

我们有一个 symfony2 应用程序。在我们尝试创建子域(用于不同的应用程序)之前,一切都是成功的。对于我们对子域的第一次测试,我们将子域链接到 s2 应用程序中的路由。

在我们的测试之后,应用程序总是为之前测试中使用的路由返回一个 404 代码。我们返回服务器内的所有配置,问题仍然存在。

路由是“/usuario/iniciar-session”。

我们原来的路由配置是:

#/src/AppBundle/Resources/routing.yml
app_user:
    resource: routing/user.yml
    prefix: /usuario

#/src/AppBundle/Resources/routing.yml
app_login:
    path: /iniciar-sesion
    defaults: { _controller: AppBundle:User:login }

我们在控制台中执行下面的命令来检查路由:

php console router:debug
php console router:match /usuario/iniciar-sesion

一切看起来都很好。

其他一切正常。此时修补程序正在更改前缀(我们称为“usuarios”)并且应用程序运行成功。之后我们尝试返回原始前缀,但应用程序一直返回 404 代码。

我们执行了很多 cache:clear --env=prod 并手动删除缓存目录。在我们当地的环境中,一切正常。

我们还能检查什么?

【问题讨论】:

  • 我不确定您要达到什么目的...您想用子域替换此路由吗? (/usuario/iniciar-sesion -> usarios.site.com ?)
  • 是的,这是我们检查服务器配置以集成新应用程序的试验。
  • 我假设 app_login 路由位于 routing/user.yml 中,而不是您在声明上方的评论中所写的文件中。没有?
  • 是的,app_login在routing/user.yml中。

标签: php symfony routing


【解决方案1】:

正如你在评论中所说,我认为你正在努力实现这一目标:

#/src/AppBundle/Resources/routing.yml
app_login:
    host: usuario.site.com
    path: /iniciar-sesion
    defaults: { _controller: AppBundle:User:login }

在服务器主机配置中,您需要将子域添加为 ServerAlias 并拥有我认为的子域:https://www.godaddy.com/help/add-a-subdomain-that-points-to-a-server-name-19974

【讨论】:

  • 我们没有以正确的方式表达我们的问题。我们在应用程序中测试了子域的配置,这个试验打破了我们在应用程序中的路径。只有当我们改变路径的前缀时,控制器才会正确响应。
【解决方案2】:

我们解决了这个问题。

我们在设置域时没有考虑服务器创建的文件夹。我们删除了它们,应用程序会在原始路径上做出响应。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 2018-11-01
    • 2017-10-27
    相关资源
    最近更新 更多