Ano, protože regex ^health-institute-([a-zA-Z\-]+)-([a-zA-Z\-]+)$
v první pravidlo také odpovídá health-institute-app-mycity
.
Potřebujete zvrátit tyto dvě směrnice takže další zvláštní pravidlo je první.
Napří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]
(Není třeba zpětné lomítko-útěk spojovník, když na začátku nebo na konci znak třídy.)
NICMÉNĚ, regex v (nyní) druhé pravidlo je potenciálně nejednoznačný, protože spojovník (-
) se používá k oddělení dvou hodnot (city
a speciality
), ale pomlčka je také zahrnuta v obou tříd postav, tak to může pravděpodobně být součástí samotné hodnoty. Nicméně, oba city
a speciality
nemohou obsahovat pomlčky, i přes regex zdánlivě které to umožňují.
Například, jak by měla žádost o health-institute-foo-bar-baz-qux
být vyřešen? Od kvantifikátor +
je chamtivý, to se v současné době v důsledku search.php?city=foo-bar-baz&speciality=qux
. Pokud tam je někdy pomlčka v speciality
(jak to navrhl by mohl být případ podle regex) to nebude nikdy uzavřeno.
health-institute-foo-bar-baz-qux
odhodlání? Můžecity
obsahují spojovníky?