mod_evhost должен быть в состоянии выяснить, корень один документ из частей представленного имени хоста. Он не может угадать среди трех вариантов и не пытаться выяснить, какой из них существует (особенно, если это случается с несколькими непреднамеренными случаями).
Вам либо нужно предоставить mod_evhost достаточную информацию в именах хостов, чтобы однозначно выбрать путь, или вам придется участвовать хотя бы в одном уровне перенаправления в вашей файловой системе.
Вариант 1:
evhost.path-pattern = vhosts_dir + "/%2.%1/public/"
Это теряет всю информацию о клиенте/магазине/компании, которую вы хотите захватить, но на самом деле позволяет mod_evhost работать.
Вариант 2: у вас есть каталоги, разделенные, как вы хотите, и каталог, полный ссылок на эти каталоги. FS имеет видимую структуру, а mod_evhost должен угадать имя ссылки, которая перенаправляется в вашу структуру.
directory_containing_links/
foo.bar -> ./customers/foo.bar/public/
foo.baz -> ./customershops/foo.baz/public/
foo.qux -> ./company/foo.qux/public/
quux.bar -> ./customershops/quux.bar/public/
quux.baz -> ./customers/quux.baz/public/
(and so on, with one link per site)
directory_containing_sites/
company/foo.qux/public/(web site here)
customers/foo.bar/public/(web site here)
customers/quux.baz/public/(web site here)
customershops/foo.baz/public/(web site here)
customershops/quux.bar/public/(web site here)
Тогда ваш шаблон evhost равен
evhost.path-pattern = directory_containing_links + "/%2.%1/"
Обратите внимание, что directory_containing_links и directory_containing_sites могут быть одним и тем же каталогом.
Вариант 2 выглядит интересным. Собираюсь проверить это. Я использую параметр 1 на других моих серверах, и он работает как шарм. –
Большое спасибо Эрик –