Я хотел бы использовать значение, установленное VirtualDocumentRoot
в RewriteRule
.
В документации Apache говорится:
Еще одна вещь, которую необходимо определить, — это корень документа (настраивается с помощью DocumentRoot и доступен для сценариев CGI через переменную среды DOCUMENT_ROOT). В обычной конфигурации это используется основным модулем при сопоставлении URI с именами файлов, но когда сервер настроен для динамического виртуального хостинга, эту работу должен взять на себя другой модуль (либо mod_vhost_alias, либо mod_rewrite), который имеет другой способ сделать отображение. Ни один из этих модулей не отвечает за настройку переменной среды DOCUMENT_ROOT, поэтому, если какие-либо документы CGI или SSI используют ее, они получат вводящее в заблуждение значение.
Судя по документации, я не смогу использовать %{DOCUMENT_ROOT}
в RewriteRule
. Но после поиска альтернативных решений я нашел этот тикет (название: < em>Переменная среды DOCUMENT_ROOT неправильно задана с помощью VirtualDocumentRoot), говоря, что это было «исправлено в версии 2.4.1».
Я использую последнюю (стабильную) версию Apache:
$ httpd -v
Server version: Apache/2.4.9 (Unix)
Server built: Jun 18 2014 03:07:48
... но, похоже, это не работает для меня. При тестировании %{DOCUMENT_ROOT}
имеет значение по умолчанию, установленное DocumentRoot в httpd.conf. Я хотел бы, чтобы %{DOCUMENT_ROOT}
(или любая другая переменная, которую я мог бы использовать) динамически устанавливалась VirtualDocumentRoot
.
Вот что я хотел бы использовать в httpd-vhosts.conf:
<VirtualHost *:8080>
ServerName dev
ServerAlias *.dev
VirtualDocumentRoot "/usr/local/var/www/.dev/%-2+"
RewriteRule ^/(.*\.php(/.*)?)$ "fcgi://127.0.0.1:9000%{DOCUMENT_ROOT}/$1" [P]
</VirtualHost>
Есть ли решение?