Wprowadź adres URL: application.local/v2/en-us/login
Oczekiwany adres wyjściowy: application.local/app_dev.php/en-us/login
Jedyną różnicą jest to, że zastępujemy /v2/
z /app_dev.php
. Oto moja zasada przepisywania.
RewriteRule ^/(v2)?/(([A-Za-z]+-[A-Za-z]+)|_(.*)+)?/(.*)+?$ /app_dev.php/$2/$3 [R,L]
W mojej logice chodzi:
- Mecz
/v2/
(wchodzi w to$1
) lub _profiler, _wdt itp., których używa Symfony - Dopasuj ustawienia regionalne (dotyczy to
$2
) - Dopasuj rzecz po, w tym przypadku:
login
(to wchodzi$3
)
Jednak, $3
nie zawiera login
zgodnie z oczekiwaniami otrzymuję:
application.local/app_dev.php/en-us/en-us
Chociaż mam zamiennik /v2/
i /app_dev.php
pracując, myślę, że popsuję mecz pomiędzy $2
i $3
gdzieś po login
. Co ja robię źle?
Odpowiedzi:
4 dla odpowiedzi № 1^/(v2)?/(([A-Za-z]+-[A-Za-z]+)|_(.*)+)?/(.*)+?$
|||| |||||||||||||||||||||||||||||| ||||
1111 2|||||||||||||||||||||22||||22 5555
333333333333333333333 4444
Masz wewnętrzne grupy, które się liczą. Dodałem liczby, abyś mógł je łatwo zobaczyć.
To powinno działać:
RewriteRule ^/(v2)?/(([A-Za-z]+-[A-Za-z]+)|_(.*)+)?/(.*)+?$ /app_dev.php/$2/$5 [R,L]
Zamiast używać skomplikowanego wyrażenia regularnego, możesz po prostu przekierować wszystko.
RewriteRule ^/v2/(.*)$ /app_dev.php/$1 [R,L]