Но есть нюансы:
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 и реализован."
Оттуда же. Линк потерян, сорь.
Комментариев нет:
Отправить комментарий