Назад | Перейти на главную страницу

Перезапись всего URL с помощью mod_rewrite

Я знаю, как использовать Apache mod_rewrite обычным образом, но теперь я пытаюсь использовать его по-другому, что на тот момент не имело успеха. Вот что я написал:

RewriteEngine on
RewriteMap lowercase int:tolower
RewriteCond %{lowercase:%{HTTP_HOST}} ^([^.]+)\.internal$
RewriteRule ^(.*)$ http://%1.local$1

А вот и вся история:

Я добавил две строчки в свой hosts файл так:

127.0.0.1    test.local
127.0.0.1    test.internal

Я также добавил виртуальный хост для test.local в моем Apache и создал файл, чтобы URL-адрес http://test.local/info.php распечатывает конфигурацию PHP и прочее. Теперь вернемся к директивам mod_rewrite; Я надеялся, что написал то, что написал в начале публикации, когда открываю URL http://test.internal/info.php он будет обслуживаться test.local/info.php сценарий. Кто-нибудь может сказать мне, что я сделал не так?

Кстати, я написал данные директивы в основном файле конфигурации Apache, а не в виртуальном хосте, и я настаиваю на этом.

[ОБНОВИТЬ]

Я добавил следующие две строки в файл конфигурации Apache, чтобы я мог отлаживать Rewriteповедение:

RewriteLog "/tmp/rewrite.log"
RewriteLogLevel 9

У меня есть пара виртуальных хостов на этой машине, которые используют Rewrite и когда я их посещаю, из-за этих двух строк создается файл журнала по указанному пути. Но когда я приезжаю http://test.internal/info.php файл журнала не создается.

[ОБНОВИТЬ]

Уточню свою цель, может я все делаю не так с нуля.

У меня много VPS, на каждом из которых размещается отдельный сайт. И все они находятся в локальной сети, и я хочу добавить интерфейс к этой коллекции веб-сайтов, чтобы к ним можно было получить доступ из Интернета. Но дело в том, что члены этой коллекции динамически добавляются или удаляются, поэтому я не хочу изменять конфигурационный файл моего DSN и / или обратного прокси-сервера каждый раз, когда что-то меняется. Я могу использовать подстановочный знак в DNS-сервере, чтобы направлять все запросы к определенному домену на внешний интерфейс (обратный прокси-сервер), и тогда он будет перенаправлять запрос на соответствующий VPS, используя свой поддомен (каждый поддомен логически назначен VPS). С этой целью я настрою локальный DNS, сопоставляющий некоторые фиктивные доменные имена с внутренними IP-адресами VPS. Остается только то, что обратный прокси-сервер должен переписать URL-адрес запроса, чтобы он соответствовал фиктивным доменам.

Единственная часть этого решения, которую я не могу понять, - это как указать Apache сопоставить домен входящих запросов с фиктивными!

Какие-либо предложения?

Я нашел другой способ решить свою проблему, он называется mod_proxy_express и он доступен в Apache 2.4. Он способен отображать большое количество доменов на их IP-адреса с помощью базы данных.