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/