LINUX.ORG.RU
решено ФорумAdmin

Проблема с urlrewrite после обновления nginx

 , , , , urlrewrite


1

1

Привет, ЛОР!

Смотри, какая штука: есть сервер с работающим на нем веб-проектиком на bitrix (гусары, молчать!). И, как в лучших домах Лондона, на нем помимо блэкджека есть urlrewrite. Конфигурация сервера - apache бэкэндом, nginx фронтэндом. Сейчас стоит

nginx version: nginx/1.0.15
и урлы рерайтятся как надо. Правила рерайта хранятся в файлике, на который я заруливаю запросы вот таким образом:
.htaccess:
RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-l
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
  RewriteCond %{REQUEST_URI} !/nagios$
  RewriteCond %{REQUEST_URI} !/munin$
  RewriteCond %{REQUEST_URI} !/server-status$
  RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
Однако ж выяснилась забавнейшая вещь. Стоит мне сделать yum update и обновить nginx до версии
1.2.4-1.el6.ngx
И все перестает работать. В частности, в логи сыплются такого рода записи:
access.log:

[15/Jul/2013:21:58:07 +0400] "GET /profile/627/ HTTP/1.1" 404 16345 "http://189.202.23.90/users/" "Mozilla/5.0 (X11; Linux i686; rv:22.0) Gecko/20100101 Firefox/22.0" 1373911087.310

error.log:

[notice] 18682#0: *11 rewritten data: "/bitrix/urlrewrite.php", args: "", client: 95.79.235.116, server: bx, request: "GET /upload/iblock/2db/%D0%BC%D0%B0%D0%BD%D0%B6%D0%B5%D1%82%D0%B0.jpg HTTP/1.1", host: "189.202.23.90", referrer: "http://189.202.23.90/profile/627/"
Т.е., судя по всему, тут имеет место подмена request_uri, а вот почему так получается (напомню, до апдейта все работает, конфиги оставляю старые рабочие) - не пойму. Из-за этого падает один из пхпшных скриптов вот на этом месте:
if (!CHTTP::isPathTraversalUri($_SERVER["REQUEST_URI"]))
{

        foreach($arUrlRewrite as $val)
        {
                if(preg_match($val["CONDITION"], $requestUri))
                {
Поскольку $requestUri не содержит параметров, а только строчку «/bitrix/urlrewrite.php».

Напоследок примеры правил рерайта:

<?
$arUrlRewrite = array(
        array(
                "CONDITION"     =>      "#^/profile/([0-9]*)/{0,1}portfolio/edit/([0-9]+|NEW)\\?{0,1}#",
                "RULE"  =>      "user_id=$1&ID=$2&",
                "ID"    =>      "",
                "PATH"  =>      "/profile/portfolio/edit.php",
        ),
        array(
                "CONDITION"     =>      "#^/profile/([0-9]*)/{0,1}battle/call/([0-9]+)/{0,1}\\?{0,1}#",
                "RULE"  =>      "user_id=$1&BATTLE_ID=$2&$3",
                "ID"    =>      "",
                "PATH"  =>      "/profile/battle/battle.call.php",
        ))
?>

ЛОР, в какую сторону рыть, чтобы решить проблему?

★★

конфигурацию nginx бы привели что ли, раз из-за него проблема

frozen_twilight ★★
()
Ответ на: комментарий от zgen

Спасибо огромное! То, что надо!

kir64 ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.