У меня есть установка 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/