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

Igor Sysoev is at rambler-co.ru
Thu Aug 9 15:23:37 MSD 2007


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





More information about the nginx-ru mailing list