【问题标题】:Twig - Get URL for canonical tagTwig - 获取规范标签的 URL
【发布时间】:2013-11-03 22:06:05
【问题描述】:

我希望在我的应用程序中创建一个动态 rel="canonical" 标记,该标记会提取当前 URL,但希望确保删除所有查询参数。例如,http://www.example.com/test/?page=2 应该具有 http://www.example.com/test/ 的规范,因此 {{ app.request.uri }} 不起作用,因为这也会引入 ?page=2

有谁知道如何在没有查询参数的情况下拉入页面的绝对路径?

【问题讨论】:

  • 我不认为这是可能的(也许我错了),但你可以编写将 app.request.uri 拆分为 ? 字符的 Twig 扩展...
  • 我只记得有app.request.baseUrl。你试过吗?

标签: symfony twig canonical-link


【解决方案1】:

这会起作用的,

{{ url(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')) }}

【讨论】:

  • +1 没试过,但这似乎是一个很好的解决方案:)
  • 路由参数中没有提供查询字符串吗?
  • @SteveBuzonas,不,它只是根据当前路由名称生成 url,它是参数。如果您有其他查询字符串,您需要自己添加它
  • 在您的 404 页面中,如果您扩展了使用此代码的模板,请确保将其放在 if 块中,否则 404 页面将成为 500 页面,因为路由不存在。
  • 它像罪一样丑陋,但它仍然可以在 Symfony 4.4 中完成工作。谢谢!
【解决方案2】:

我刚刚尝试转储baseUrl,可以确认它不起作用。

但是,这有效

{{ app.request.getSchemeAndHttpHost ~ app.request.baseUrl ~ app.request.pathInfo }}

我知道,它并不漂亮,但它确实有效:)

【讨论】:

  • 这就是我要找的,上面的解决方案不包括生成的 url 的参数。
  • 这应该是公认的答案,因为另一个会导致每个错误页面(如 403、404 等)出现 500 个错误!
猜你喜欢
  • 2019-12-05
  • 2013-05-03
  • 1970-01-01
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-12
  • 1970-01-01
相关资源
最近更新 更多