Судя по вашему вопросу, ваш файл .htaccess находится в папке / finance / . Если это так, проблема заключается в том, что ваш второй RewriteRule
будет соответствовать запросам ваших скриптов и таблиц.
Условия, которые у вас уже есть, позволят вам избежать этой проблемы, но они применяются только к первому правилу, которое идет после них (ваше правило поиска). Как обычно, есть несколько разных способов исправить ситуацию, но самый простой - скопировать свой блок RewriteCond
, чтобы он применился и ко второму правилу. Это будет выглядеть следующим образом:
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 =cms
RewriteRule ^([^/]*)/search/([^/]+)$ index.php?lang=$1&id=search&searchword=$2 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !=cms
RewriteRule ^([^/]*)/([^/]*)$ index.php?lang=$1&id=$2 [L]
Обратите внимание, что вам может даже не понадобиться блок условия для первого правила, поскольку, вероятно, маловероятно, что какие-либо из ваших реальных файлов соответствуют этому тестовому шаблону. Однако для второго он определенно необходим, чтобы предотвратить неправильное направление ваших ресурсов.
Альтернативный подход
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond $1 !=cms
RewriteRule ^([^/]*) - [S=2]
RewriteRule ^([^/]*)/search/([^/]+)$ index.php?lang=$1&id=search&searchword=$2 [L]
RewriteRule ^([^/]*)/([^/]*)$ index.php?lang=$1&id=$2 [L]
В этом подходе, если какое-либо из ваших условий соответствует, мы пропускаем следующие два правила (обозначенные S=2
. Это то же самое, что применять блок условий к обоим из них. Как Gumbo упоминает , вы также можете использовать флаг L
вместо S=2
, чтобы игнорировать каждое правило, которое следует за этим блоком в случае совпадения ваших условий. Какой из этих параметров является наиболее подходящим, зависит от того, какие другие правила вы можете пожелать добавить в будущем.