Я пытаюсь создать комплексную систему для любых поддоменов (не охваченных предыдущими правилами перезаписи) для определенного домена и обслуживать веб-сайт из подкаталога, который находится в той же папке, что и файл .htaccess. У меня уже есть мой vhosts.conf для отправки всех несопоставленных запросов в папку «игровая площадка», где я хочу легко создавать новые поддомены, просто добавляя подпапку.
Итак, моя структура выглядит так:
/var/www/playground
|-> /foo
|-> /bar
.Htacces, находящиеся в папке / Playground, а / foo и / bar - это отдельные веб-сайты. я хочу http://foo.domain.com
указать на / foo и http://bar.domain.com
в бар.
Вот мой файл .htaccess:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^([^.]+).domain.com$ [NC]
RewriteCond %{REQUEST_URI} !^/%1/(.*)
RewriteRule ^(.*) /%1/$1 [L]
Это должно захватить субдомен, добавить его как подпапку в RewriteRule, а затем добавить после косой черты и информацию о пути. Второй RewriteCond предназначен для предотвращения бесконечного цикла. Я предполагал, что% 1 во втором RewriteCond сможет захватить группу захвата в первом RewriteCond. Но до сих пор у меня не было успеха, это всегда заканчивалось циклом перенаправления. Если бы я заменил% 1 во втором RewriteCond жестко запрограммированным 'foo' или 'bar', это сработает, что заставляет меня полагать, что вы не можете ссылаться на группу захвата внутри RewriteCond. Это правда? Или я что-то упускаю?
Надеюсь, я правильно вас понял:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^([^.]+).domain.com$ [NC]
RewriteCond %{REQUEST_URI} !%1
RewriteRule ^(.*)$ /%1/$1 [L]