RewriteCond
может иметь часть совпадения в качестве первого аргумента, поэтому вы можете использовать
RewriteCond %{DOCUMENT_ROOT}/client/$1 -d
RewriteRule ^(.+?)/(.*)$ /client/$1/$2 [L,QSA]
Apache проверит, начинается ли% {REQUEST_URI} (^
) с имени каталога ненулевой длины, за которым следует косая черта, затем он будет использовать первое совпадение, чтобы проверить, существует ли каталог с таким именем %{DOCUMENT_ROOT}/client/
. Если это так, правило перезаписи будет применяться независимо от слэша (даже ничего).
например. если пользователь запрашивает страницу
mydomain.com/sampleclient/orders
Apache проверит, существует ли %{DOCUMENT_ROOT}/client/sampleclient
и является ли он каталогом, и если да, то загрузит
mydomain.com/client/sampleclient/orders
Как правило, он будет загружать mydomain.com / client / sampleclient / [все, что следует после первой косой черты] .
Если вам не нужно загружать mydomain.com/client/sampleclient/orders
и вы хотите применить правила перезаписи внутри каталога sampleclient
, используйте
RewriteRule ^(.+?)/(.*)$ /client/$1/ [QSA]
То есть удалите $2
из строки замены и флаг L
в квадратных скобках.
См. Также эти документы Apache для получения дополнительной информации.