On Thu, Aug 09, 2007 at 02:14:29PM +0400, Vitaly Puzrin wrote:
> >> >> Проапдейтил php-скрипты, и оказалось что они захотели переменную
> >> >> SCRIPT_URL, думая, что стоят на апаче с mod_rewrite.
> >> >>
> >> >> Подскажите пожалуйста, как эту переменную правильно задать из
> >> >> подручных средств.
> >>
> >> IS> Судя по тому, что написано в конце
> >> IS> http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html
> >> IS> для этого подойдёт $uri, если оно не менялось rewrite'ом.
> >>
> >> Игорь, в том и проблема, оно меняется реврайтом :(
> >>
> >> И по-моему, в uri все равно содержится имя файла, а если я правильно
> >> понял, то SERVER_URL - именно путь к директории (со слешом на конце),
> >> без файла (если был) и хоста.
> >>
> >> Очень внимательно копался в документации, так и не смог найти чего-то
> >> похожего. Никак не ожидал подобной плюхи от EZ Publish. Хоть
> >> назад откатывайся.
> >>
> >> Может добавить такую переменную в список ngx_http_core_module?
>
> IS> Насколько я понимаю, это SCRIPT_URL - это оригинальный URI:
>
> IS> set $script_url $uri;
> IS> any rewrites
>
> Игорь, посмотрите пожалуйста пример из документации по SCRIPT_URL, там
> нет имени файла, только путь. Я смотрел по php-скриптам - они тоже без имени
> файла хотят.
В примере после rewrite может быть всё, а вот, что они пишут в пояснении:
Notice: These variables hold the URI/URL as they were initially requested,
i.e., before any rewriting. This is important because the rewriting
process is primarily used to rewrite logical URLs to physical pathnames.
Кроме того, в исходниках SCRIPT_URL выставляется в полный r->uri:
if (var == NULL) {
ap_table_setn(r->subprocess_env, ENVVAR_SCRIPT_URL, r->uri);
}
> set сделать можно, но как с конца имя файла до слеша откусить?
set $script_url $uri;
if ($uri ~ ^(.+/)[^/]+$) {
set $script_url $1;
}
--
Игорь Сысоев
http://sysoev.ru