Áno, pretože regulárny výraz ^health-institute-([a-zA-Z\-]+)-([a-zA-Z\-]+)$
v prvom pravidle aj zápasy health-institute-app-mycity
.
Potrebujete na zvrátenie týchto dvoch smerníc, takže viac osobitné pravidlo je prvý.
Napríklad:
RewriteRule ^health-institute-app-([a-zA-Z-]+)$ search.php?city=$1 [L]
RewriteRule ^health-institute-([a-zA-Z-]+)-([a-zA-Z-]+)$ search.php?city=$1&speciality=$2 [L]
(Nie je potrebné lomítko-escape spojovník, keď na začiatku alebo na konci znak triedy.)
AVŠAK, regulárny výraz v (teraz) druhým pravidlom je potenciálne nejednoznačné, pretože spojovník (-
) sa používa na oddelenie dvoch hodnôt (city
a speciality
), ale spojovník je tiež zahrnuté v oboch tried postáv, tak to môže pravdepodobne bude časť hodnoty sami. Avšak, obe city
a speciality
nemôže oboch obsahovať pomlčky, napriek regulárny výraz zdanlivo umožňuje to.
Napríklad, ako by žiadosť o health-institute-foo-bar-baz-qux
byť vyriešený? Od quantifier +
je chamtivý, bude to v súčasnosti, v dôsledku search.php?city=foo-bar-baz&speciality=qux
. Ak nie je niekedy spojovník v speciality
(ako navrhol toto by mohol byť prípad podľa regulárny výraz) to bude nikdy byť uzavreté.
health-institute-foo-bar-baz-qux
vyriešiť? Môžecity
obsahovať pomlčky?