【发布时间】:2017-03-18 16:05:59
【问题描述】:
我已经很久没有使用 CI 编码了,我想重写一些我之前的路由,使其更加动态。
由于某种原因,我添加的这个正则表达式匹配所有内容,我不知道为什么。
$route['([a-z]+-[a-z]+)'] = 'Main/example_function/$1';
它匹配所有其他尚未分配的路由,即使有多个片段。匹配的路由示例:
example.com/aaaaa
example.com/aaaaa-asd
example.com/aaaaa/aaaa
我只需要它专门匹配这种风格的路线:
example.com/aaaaa-aaaaa
我在不同的路径中有其他正则表达式,但格式为 example.com/test/([a-z]+),它们工作正常。
将它放在所有其他声明的路由之后不是一种选择,因为并非所有路由都在那里声明。
提前致谢!
【问题讨论】:
-
使用@SahilGulati 提出的规则并将该规则放在最后 - 作为最后一条规则。
-
@Tpojka 正如我解释的那样,它是否是最后一条规则并不重要(我目前将它作为最后一条规则),因为并非所有内容都在那里声明。
-
CI 路由器正在通过斜杠(段)解析 url。尽管您有简洁的正则表达式规则,但它仍然是一个段,明智的做法是在 2 条以上分段路线之后保留它。
标签: regex codeigniter routes