Да, потому что регулярное выражение ^health-institute-([a-zA-Z\-]+)-([a-zA-Z\-]+)$
в первом правиле также совпадают health-institute-app-mycity
.
Вам нужно изменить эти две директивы, чтобы сначала было более конкретное правило.
Например:
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]
(Нет необходимости использовать обратную косую черту-избегайте дефиса в начале или в конце класса символов.)
ОДНАКО регулярное выражение во втором правиле (сейчас) потенциально неоднозначно, поскольку дефис (-
) используется для разграничения двух значений (city
и speciality
), но дефис также включен в оба класса символов, поэтому он, предположительно, может быть частью самих значений. Однако и то, и другое city
и speciality
не могут оба содержать дефисы, несмотря на то, что регулярное выражение, по-видимому, позволяет это.
Например, как следует запрашивать health-institute-foo-bar-baz-qux
быть решенным? Так как квантор +
является жадным, в настоящее время это приведет к search.php?city=foo-bar-baz&speciality=qux
. Если когда-либо в speciality
(как предполагает регулярное выражение, это может быть так) оно никогда не будет сопоставлено.
health-institute-foo-bar-baz-qux
решиться на это? Может лиcity
содержать дефисы?