
Я пытаюсь использовать первую часть полного доменного имени в качестве цели перезаписи:
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
Это работает отлично, но не динамично.
решение1
Решение/обходной путь: зарезервируйте одну часть имени хоста для внутренних запросов:
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]
решение2
Если вам не нужно обрабатывать какие-либо правила после переписывания, просто добавьте опцию «L» = «last» в квадратных скобках:
RewriteRule ^/(.*) http://%1.dev.example.com/%1/$1 [P,L]