Попробуйте это правило:
RewriteCond %{HTTP_HOST} ^([^/.]+)\.example\.com$
RewriteCond $1/%1 !^([^/]+)/\1$
RewriteRule ^/([^/]+)? /%1%{REQUEST_URI} [L]
Некоторое объяснение: Мое предыдущее предложение вызвало бесконечную рекурсию, поскольку флаг L вызывает перезапуск процесса перезаписи сновый URL:
Помните, однако, что если RewriteRule
генерирует внутреннее перенаправление (что часто происходит при перезаписи в контексте для каталога), это приведет к повторному отклонению запроса и вызовет обработкуповторяется, начиная с первого RewriteRule
.
Второе условие позволит избежать этого, поскольку оно сравнивает часть субдомена с первым сегментом пути.И только если они различны, условие выполняется и перезапись происходит.