Evet, çünkü regex ^health-institute-([a-zA-Z\-]+)-([a-zA-Z\-]+)$
ilk kuralda da eşleşir health-institute-app-mycity
.
Bu iki yönergeyi tersine çevirmeniz gerekir, böylece daha spesifik kural ilk olur.
Örneğin:
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]
(Karakter sınıfının başında veya sonundayken ters eğik çizgiden kaçmanıza gerek yoktur.)
BUNUNLA birlikte, (şimdi) ikinci kuraldaki regex, tire işaretinden bu yana potansiyel olarak belirsizdir (-
) iki değeri sınırlamak için kullanılır (city
ve speciality
), ancak tire her iki karakter sınıfına da dahil edilmiştir, bu nedenle muhtemelen değerlerin kendilerinin bir parçası olabilir. Ancak, her ikisi de city
ve speciality
regex'in buna izin vermesine rağmen, her ikisi de tire içeremez.
Örneğin, bir istek nasıl olmalıdır health-institute-foo-bar-baz-qux
çözülmesi? Niceleyiciden beri +
açgözlü, bu şu anda sonuçlanacak search.php?city=foo-bar-baz&speciality=qux
. İçinde bir tire varsa speciality
(bu, regex tarafından önerildiği gibi) asla eşleştirilmeyecektir.
health-institute-foo-bar-baz-qux
gidermek için? Olabilircity
tire içeriyor mu?