Apache mod_rewrite поддомен в подпапку (через внутренний редирект)

Я пытаюсь написать набор правил mod_rewrite, которые позволяют моим пользователям использовать одну папку для разработки в разных проектах, и мне не нужно возиться с добавлением vhosts для каждого отдельного проекта.

Моя идея сделать это состоит в том, чтобы создать & quot; Global VHost & quot; для каждого пользователя, которому нужна эта способность (только 3-4), vhost будет выглядеть примерно так: .my-domain.com. Оттуда я хочу, чтобы мои пользователи писали код, как если бы он был в домене, а не в подпапке. Например, если Боб работал над проектом под названием «gnome», apos; Мне бы хотелось, чтобы URL-адрес bob (и любой другой в нашей внутренней сети) загружался, чтобы попасть в этот проект:http://gnome.bob.my-domain.com, Но то, что я хотел бы сделать в Apache, - это признать, что "gnome" является "проектом" и, таким образом, сопоставьте запрос внутренне с bob.my-domain.com/gnome/.

Я получил то, что, как я думал, будет работать, и это довольно просто, но ... это не работает! Запрос просто входит в бесконечный цикл и продолжает префикс поддомена переписанного URI запроса.

Мод переписать код у меня есть:

RewriteEngine On

RewriteCond %{HTTP_HOST}    ^([^.]+)\.bob\.my-domain\.com
RewriteCond %{REQUEST_URI}  !^/%1.*
RewriteRule ^(.*)$      /%1/$1 [L]

Я немного погуглил по этому поводу, но пока не нашел каких-либо реальных решений, которые бы работали. Кто-нибудь пробовал это - или, может быть, у кого-то есть идея получше? Тот, который не включает создание виртуального хоста для каждого проекта (у меня есть дизайнеры ... Я думаю, что все согласятся с тем, что дизайнер не должен делать виртуальные хосты ...)

Спасибо!

Вот фрагмент из rewrite_log:

[rid#838dc88/initial] (3) [perdir /home/bob/http/] strip per-dir prefix: /home/bob/http/index.html -> index.html
[rid#838dc88/initial] (3) [perdir /home/bob/http/] applying pattern '^(.*)

Это всего лишь фрагмент, есть несколько десятков или около 100 строк apache, которые в основном переписывают /gnome/index.html в /gnome/gnome/gnome/gnome/gnome/index.html и т. Д., Прежде чем apache достигнет предела перезаписи сдается и выдает ошибку 500

to uri 'index.html' [rid#838dc88/initial] (4) [perdir /home/bob/http/] RewriteCond: input='gnome.bob.my-domain.com' pattern='^([^.]+)\.bob\.my-domain\.com' => matched [rid#838dc88/initial] (4) [perdir /home/bob/http/] RewriteCond: input='/index.html' pattern='!^/%1.*' => matched [rid#838dc88/initial] (2) [perdir /home/bob/http/] rewrite 'index.html' -> '/gnome/index.html' [rid#838dc88/initial] (1) [perdir /home/bob/http/] internal redirect with /gnome/index.html [INTERNAL REDIRECT] [rid#8392f30/initial/redir#1] (3) [perdir /home/bob/http/] strip per-dir prefix: /home/bob/http/gnome/index.html -> gnome/index.html [rid#8392f30/initial/redir#1] (3) [perdir /home/bob/http/] applying pattern '^(.*)

Это всего лишь фрагмент, есть несколько десятков или около 100 строк apache, которые в основном переписывают /gnome/index.html в /gnome/gnome/gnome/gnome/gnome/index.html и т. Д., Прежде чем apache достигнет предела перезаписи сдается и выдает ошибку 500

to uri 'gnome/index.html' [rid#8392f30/initial/redir#1] (4) [perdir /home/bob/http/] RewriteCond: input='gnome.bob.my-domain.com' pattern='^([^\.]+)\.bob\.my-domain\.com' => matched [rid#8392f30/initial/redir#1] (4) [perdir /home/bob/http/] RewriteCond: input='/gnome/index.html' pattern='!^/%1.*' => matched [rid#8392f30/initial/redir#1] (2) [perdir /home/bob/http/] rewrite 'gnome/index.html' -> '/gnome/gnome/index.html' [rid#8392f30/initial/redir#1] (1) [perdir /home/bob/http/] internal redirect with /gnome/gnome/index.html [INTERNAL REDIRECT] [rid#8397970/initial/redir#2] (3) [perdir /home/bob/http/] add path info postfix: /home/bob/http/gnome/gnome -> /home/bob/http/gnome/gnome/index.html

Это всего лишь фрагмент, есть несколько десятков или около 100 строк apache, которые в основном переписывают /gnome/index.html в /gnome/gnome/gnome/gnome/gnome/index.html и т. Д., Прежде чем apache достигнет предела перезаписи сдается и выдает ошибку 500

Ответы на вопрос(4)

Ваш ответ на вопрос