Apache - трактовать URL-адрес как виртуальный хост - PullRequest
13 голосов
/ 01 августа 2011

Проблема в том, что у меня есть только одно доменное имя, для которого нужно запустить 3 разных продукта (2 из них на основе PHP, 1 питон). Поэтому мне нужно рассматривать путь в URL как другой виртуальный хост; то есть:

www.domain.com/first_url/
www.domain.com/second_url/
www.domain.com/third_url/

Где с первого по третий будут действовать как отдельные виртуальные хосты.

Любая подсказка, как это сделать?

Ответы [ 4 ]

19 голосов
/ 23 августа 2012

Прошло много времени с тех пор, как был задан этот вопрос, но, поскольку я искал решение для подобного рода проблемы, я добавлю решение.

Этого можно достичь с помощью директивы Alias ​​или AliasMatch. Более подробную информацию можно найти здесь:

http://httpd.apache.org/docs/2.2/mod/mod_alias.html

Alias /first_url/ /var/www/first_url_resources
5 голосов
/ 01 августа 2011

«Виртуальный хост» в apache работает только с именами доменов, а не с частями пути.Вы не можете достичь того, чего хотите.

1 голос
/ 29 марта 2017

В этом примере объясняется, как назначать разные версии PHP для каждого каталога, его также можно адаптировать для добавления поддержки Python, запустив интерпретатор Python как fast_cgi на конкретном порту

Для примера я предполагаю, что для каждой версии PHP есть отдельный каталог, и они называются в соответствии с версией PHP, которая их запускает, но это можно изменить

mkdir /home/user/www
mkdir /home/user/www/5.6.5
mkdir /home/user/www/7.0.2
mkdir /home/user/www/7.0.4
mkdir /home/user/www/7.0.6

создавать символические ссылки на каталоги, которые должны обрабатываться различными версиями PHP

sudo ln -s /home/user/www/7.0.2/ /var/www/html/7.0.2
sudo ln -s /home/user/www/7.0.4/ /var/www/html/7.0.4
sudo ln -s /home/user/www/7.0.6/ /var/www/html/7.0.6

затем добавьте следующие строки в /etc/apache2/sites-enabled/000-default.conf на виртуальном хосте по умолчанию *:80

(для ваших нужд вы можете установить здесь еще один быстрый обработчик cgi для веб-сайта, для которого требуется Python), я предполагаю, что php 5.6.5 работает на порту 9999, 7.0.2 работает на порту 9998 и т. Д.

DirectoryIndex index.html index.php
ProxyPassMatch ^/5.6.5/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9999/var/www/html/
ProxyPassMatch ^/7.0.2/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9998/var/www/html/
ProxyPassMatch ^/7.0.4/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9997/var/www/html/
ProxyPassMatch ^/7.0.6/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9996/var/www/html/

при условии, что ваш сервер указан example.com, вы можете проверить его на

http://example.com/5.6.5/
http://example.com/7.0.2/
http://example.com/7.0.4/
http://example.com/7.0.6/
1 голос
/ 01 августа 2011

Возможно, вы захотите что-то сделать с помощью директив apache-config, поскольку вы запрашиваете решение для виртуального хоста.Как объяснил @cweiske, Apache может работать только с virtualHosts как с действительными доменами.

В этом случае решение может заключаться в том, чтобы использовать файл .htaccess в подкаталогах, в которых вы работаете, или установитьдо блока <Directory "/web/root/subdir">..</Directory> в вашей текущей (виртуальной) конфигурации хоста.

Вы также можете разместить их на разных поддоменах, если вы сами хотите запускать их как VirtualHosts ('app1.domain).org ')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...