Zend_Controller_Router_Route_Regex不匹配拉丁语,但只匹配西里尔字符

时间:2012-06-24 11:10:20

标签: regex zend-framework

我定义了以下自定义路由:

; Language
routes.lang.type = "Zend_Controller_Router_Route"
routes.lang.route = :lang
routes.lang.defaults.lang = "bg"
routes.lang.defaults.action = "index"
routes.lang.defaults.controller = "index"
routes.lang.defaults.module = "site"
routes.lang.reqs.lang = "[a-z]{2}"

; Article
routes.lang.chains.a.type = "Zend_Controller_Router_Route_Regex"
routes.lang.chains.a.route = "([^\.html ]+).html$"
routes.lang.chains.a.defaults.action = "index"
routes.lang.chains.a.defaults.controller = "article"
routes.lang.chains.a.defaults.module = "site"
routes.lang.chains.a.map.articleIdent = 1
routes.lang.chains.a.reverse = "%s.html"

当我尝试访问以下网址时,一切正常: http://site.local/en /тест.html - >匹配

问题在于,当我尝试访问仅包含拉丁字符的网址时,路由正在传递: http://site.local/en/test.html - >不匹配

我无法弄明白问题出在哪里。非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

问题在于正则表达式。在圆括号中,我想包括除“.html”之外的所有内容,但语法错误。好吧,我现在仍然不应该是正确的语法,但无论如何,以下更改完成了工作:

routes.lang.chains.a.route = "(.*).html$"