gpt4 book ai didi

regex - mod_rewrite 不匹配上次匹配

转载 作者:行者123 更新时间:2023-12-01 09:50:52 24 4
gpt4 key购买 nike

输入网址:application.local/v2/zh-cn/login

预期输出网址:application.local/app_dev.php/en-us/login

这里唯一的区别是我们将 /v2/ 替换为 /app_dev.php。这是我的重写规则。

RewriteRule ^/(v2)?/(([A-Za-z]+-[A-Za-z]+)|_(.*)+)?/(.*)+?$ /app_dev.php/$2/$3 [R,L]

按顺序,我的逻辑是:

  • 匹配 /v2/(进入 $1)或 Symfony 使用的 _profiler、_wdt 等
  • 匹配语言环境(进入 $2)
  • 匹配后面的内容,在本例中为:login(在 $3 中)

但是,$3 并不像我期望的那样包含 login,而是我得到:

application.local/app_dev.php/en-us/en-us

虽然我有 /v2//app_dev.php 的替代品,但我认为我弄乱了 $2 之间的匹配> 和 $3 用于 login。我做错了什么?

最佳答案

^/(v2)?/(([A-Za-z]+-[A-Za-z]+)|_(.*)+)?/(.*)+?$
|||| |||||||||||||||||||||||||||||| ||||
1111 2|||||||||||||||||||||22||||22 5555
333333333333333333333 4444

你有重要的内部群体,我添加了数字,这样你就可以很容易地看到它。

这应该有效:

RewriteRule ^/(v2)?/(([A-Za-z]+-[A-Za-z]+)|_(.*)+)?/(.*)+?$ /app_dev.php/$2/$5 [R,L]

无需使用复杂的正则表达式,您可以路由所有内容。

RewriteRule ^/v2/(.*)$ /app_dev.php/$1 [R,L]

关于regex - mod_rewrite 不匹配上次匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35578558/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com