【问题标题】:Symfony2 routing - characters size in URLSymfony2 路由 - URL 中的字符大小
【发布时间】:2014-06-10 16:28:44
【问题描述】:

在 url 中遇到字符大小问题。 例如,我有一个路由路径:

_product:
pattern:  /product
defaults: { _controller: StoreBundle:Product:index }

然后当我在 url(/app_dev.php/product) 中使用它时,它工作正常,但如果我使用相同的路径但带有一些大写字符 (/app_dev.php/ProduCT),那么 symfony 会告诉我“没有路由找到”。

有什么方法可以让 url 不受字符大小的影响?

【问题讨论】:

  • 当然区分大小写;您在路由中定义的任何内容都应该匹配
  • 解决了使用 mod_rewrite 将 url 大小写更改为小写的问题

标签: symfony routing


【解决方案1】:

如果您出于某种原因需要这样做(不过,这是一种不好的做法,并且会强调您做错了什么,那么这将起作用:

_product:
    pattern:   /{url}/
    defaults:  { _controller: StoreBundle:Product:index }
    requirements:
        url:  (?i:product)

本质上,您使用 URL 中的变量执行不区分大小写的正则表达式。您也可以定义多个遵循类似模式的路由。

这种方法的优点是你不必为它添加重写规则。

但我必须重申,您不需要这样做。这是非常糟糕的做法。一开始对 SEO 不利。

另外,值得注意的是,您要查找的术语是“不区分大小写”。字符没有改变大小,它们正在改变大小写。 ;)

【讨论】:

  • 所谓的不良做法是指使用重写规则或你给我的例子?
  • 如果您必须这样做,重写规则是一个好方法 - 但与此相比,它们更复杂,并且更难更新,具体取决于您的服务器配置。不过,这个建议或重写规则都不应该发生,imo - 这就是我的意思。
猜你喜欢
  • 2014-06-21
  • 1970-01-01
  • 1970-01-01
  • 2012-02-22
  • 2015-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-08
相关资源
最近更新 更多