Но есть нюансы:
1) проблемы с mod_rewrite, лечится в .htaccess строкой RewriteBase /
2) Проблема с DocumentRoot, равным корневому каталогу. Тут чуть сложнее, надо писать скрипты-обработчики.
Наш скрипт для перла (года так 2007)
# Author Andrey Ivanov #include <stdio.h> #include <unistd.h> #include <string.h> int main(int argc, char *argv[], char *envp[]) { int i=0, dr=-1, sn=-1; char *foo; while(envp[i]!=NULL) { if (strstr(envp[i], "DOCUMENT_ROOT")==envp[i]) dr=i; if (strstr(envp[i], "SERVER_NAME")==envp[i]) sn=i; i++; } if (sn!=-1 && dr!=-1) { foo=strchr(envp[sn]+12, '.'); if(foo) *foo=0; sprintf(envp[dr], "DOCUMENT_ROOT=/var/www/%s/site/htroot", envp[sn]+12); } execve("/usr/local/bin/perl5.8.8", argv, envp); return(0); }Скомпилированый файл называется perl и кладется в /usr/local/bin/, заменяя старый симлинк.
Для пхп есть например такой метод
php_admin_value auto_prepend_file /path/setdocroot.php
<?php apache_setenv("DOCUMENT_ROOT",$_SERVER['DOCUMENT_ROOT'] = str_replace($_SERVER['SCRIPT_NAME'], '', $_SERVER['SCRIPT_FILENAME'])) ?>отсюда
$l = explode("/",$_SERVER['SCRIPT_FILENAME']); $DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"] = implode("/",Array( $l[0], $l[1], $l[2], $l[3], $l[4]));С хабра.
"Что касается проблем с $_SERVER['DOCUMENT_ROOT'] и RewriteBase, примечательно, что такие же проблемы есть и при реализации виртуальных хостов с помощью mod_rewrite. Не смотрел исходники vhost_alias, но такое чувство, что он с помощью mod_rewrite и реализован."
Оттуда же. Линк потерян, сорь.
Комментариев нет:
Отправить комментарий