Используйте это правило:
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/clients/
RewriteCond %{HTTP_HOST} ^(.+)\.oomail\.org
RewriteCond %{HTTP_HOST} !^www\.oomail\.org
RewriteRule ^(.*)$ /clients/%1/$1 [L]
В вашей первой попытке у вас был бесконечный цикл перезаписи , который Apache должен был прервать (по умолчанию не более 10 итераций). Во второй попытке вы сталкиваетесь с ограниченным циклом перезаписи (я думаю, 2 итерации). Вот как работает mod_rewrite, и вы должны учитывать такую возможность в своих правилах, особенно когда вы используете .*
в качестве соответствующего шаблона.
Самое первое условие в моем правиле будет препятствовать выполнению цикла перезаписи (значит, правило будет работать только на самой первой итерации). К сожалению, это означает некоторые ограничения: исходный URL НЕ МОЖЕТ начинаться с /clients/
. Например: этот URL не будет перенаправлен: http://something.example.com/clients/hello-kitten.php
.
Решение - переименуйте папку clients
во что-то более уникальное: например _clients_folder_
(вам, очевидно, придется изменить эту папку и в правилах перезаписи).
Что-то прочитать: Флаг RewriteRule Last [L] не работает?