输入网址:application.local/v2/en-us/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
)或_profiler,_wdt等Symfony使用 $2
)login
(此内容为$3
)但是,$3
并不像我预期的那样包含login
,而是我得到:
application.local/app_dev.php/en-us/en-us
虽然我已取代/v2/
和/app_dev.php
工作,但我认为我正在弄清$2
和$3
之间的匹配login
。我做错了什么?
答案 0 :(得分:4)
^/(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]