Я пытаюсь использовать первую часть fqdn в качестве цели перезаписи:
http://demo.dev.example.com/something => http://demo.dev.example.com/demo/something
RewriteCond %{HTTP_HOST} ^([a-z0-9-]+).dev.example.com [NC]
RewriteRule ^/(.*) http://%1.dev.example.com/%1/$1 [P]
Это создает бесконечный цикл. Поэтому мне нужно еще одно условие, которое проверяет, переписан этот запрос уже или нет:
RewriteCond %{REQUEST_URI} !^/%1
Что ж, это не работает, документация ничего не говорит об использовании обратных ссылок в CondPatterns, скорее всего, это не поддерживается.
RewriteCond %{REQUEST_URI} !^/demo
Это работает отлично, но не динамично.
Решение / обходной путь: зарезервируйте одну часть имени хоста для внутренних запросов:
RewriteCond %{HTTP_HOST} !^internal.dev.atizo.org [NC]
RewriteCond %{HTTP_HOST} ^([0-9a-z-]+).dev.atizo.org [NC]
RewriteRule ^/(.*) http://internal.dev.atizo.org/%1/$1 [P]
Если вам не нужно обрабатывать какие-либо правила после перезаписи, просто добавьте параметр «L» = «last» в квадратные скобки:
RewriteRule ^/(.*) http: //%1.dev.example.com/%1/$1 [P,L]