Tak, bo wyrażenie regularne ^health-institute-([a-zA-Z\-]+)-([a-zA-Z\-]+)$
w pierwszej regule również pasują health-institute-app-mycity
.
Trzeba zmienić te dwie dyrektywy, aby najpierw było bardziej konkretną regułę.
Na przykład:
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 ma potrzeby użyć ukośnika-unikaj myślnika na początku lub na końcu klasy znaków.)
JEDNAK wyrażenie regularne w drugiej regule (teraz) potencjalnie niejednoznaczne, ponieważ łącznik (-
) służy do rozgraniczenia dwóch wartości (city
i speciality
), ale kreska jest również w obu klas znaków, dlatego, prawdopodobnie, może być częścią samych wartości. Jednak i jedno i drugie city
i speciality
nie mogą zawierać oba łączniki, mimo, że wyrażenie regularne, najwyraźniej, pozwala na to.
Na przykład, jak należy zabiegać o health-institute-foo-bar-baz-qux
być kontroluje? Tak jak квантор +
jest chciwy, obecnie to doprowadzi do search.php?city=foo-bar-baz&speciality=qux
. Jeśli kiedykolwiek w speciality
(jak sugeruje wyrażenie regularne, to może tak być) to nigdy nie będzie mapowany.
health-institute-foo-bar-baz-qux
zdecydowali się na to? Czy możecity
zawierać myślników?