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

Динамические псевдонимы Apache

У меня есть установка LAMP на виртуальной машине, которую я использую для нескольких проектов. Корень моего документа - это / www, и я создаю в нем папку для каждого проекта.

/www/project1-name/
/www/project2-name/

Я получаю к ним доступ в своем браузере следующим образом:

http://dev.vm/project-name/

Я хотел бы переместить мои файлы htaccess и index в общую папку внутри проекта, чтобы они более точно соответствовали своей производственной настройке.

/www/project-name/public/

... но по-прежнему обращайтесь к ним с тем же URL-адресом, что и выше. Как я могу настроить Apache для поиска общих папок в качестве корней документов для каждого из моих проектов?

Примечание: я понимаю, что могу создавать хосты и записи vhost для каждого проекта, чтобы иметь собственный корень документа, но я пытаюсь избежать этого, потому что я планирую использовать аналогичную настройку на своем удаленном сервере для размещения нескольких проектов в поддомене. называется «демо».

Я бы пошел еще дальше с mod_alias и использовал AliasMatch директива. Должно работать так же, как решение EightbitTony, но дает вам дополнительную мощность регулярных выражений.

Я провел небольшое тестирование, и похоже, что он должен работать.

AliasMatch ^/([a-zA-Z0-9_-]+)/(.*) /www/$1/public/$2

Взгляните на Apache динамически настраиваемый массовый виртуальный хостинг документация. Не похоже, что у вас огромное количество виртуальных хостов, поэтому VirtualDocumentRoot и соответствующие директивы конфигурации, вероятно, будут делать то, что вы хотите, например

 VirtualDocumentRoot /www/%2/public

который будет отображаться на /www/project-name/public. В %n параметр интерполированный из URL, где% 0 - это целое,% 1 - первая часть и т. д.

Я не думаю, что вы хотите что-то переписывать, разве вам просто не нужны старые добрые утверждения Alias?

Из http://httpd.apache.org/docs/2.0/mod/mod_alias.html,

Description: Maps URLs to filesystem locations
Syntax:      Alias URL-path file-path|directory-path
Context:     server config, virtual host
Status:      Base
Module:      mod_alias

Так,

Alias /project-name/  /some/path/to/project-name/public/
Alias /project-name2/ /some/path/to/project-name2/public/
Alias /project-3/     /another/totally/different/path/public/