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

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

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

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

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

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

/www/project-name/public/

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

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

3 ответа

Решение

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

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

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

Ознакомьтесь с документацией по динамически настраиваемому массовому виртуальному хостингу Apache. Не похоже, что у вас есть огромное количество vhost, поэтому 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/
Другие вопросы по тегам