ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Как правильно зада ть SCRIPT_URL ?



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



 




Copyright © Lexa Software, 1996-2009.