<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body bgcolor="#ffffff" text="#000000">
<div class="moz-text-flowed"
 style="font-family: -moz-fixed; font-size: 13px;" lang="x-cyrillic">Здравствуйте,
Nginx-ru
<br>
Предлагаемые правила rewrite для движка mediawiki
<br>
<br>
<a class="moz-txt-link-freetext"
 href="http://wiki.nginx.org/NginxMediaWiki">http://wiki.nginx.org/NginxMediaWiki</a>
<br>
<br>
"страдают" тем, что в названиях статей, содержащих знак вопроса,
усекаются все символы после знака вопроса:
<br>
<br>
<a class="moz-txt-link-freetext"
 href="http://site.ru/%D0%A7%D1%82%D0%BE">http://site.ru/Что</a>
делать? Чернышевский
<br>
<br>
превращается в
<br>
<br>
<a class="moz-txt-link-freetext"
 href="http://site.ru/%D0%A7%D1%82%D0%BE">http://site.ru/Что</a>
делать?
<br>
<br>
<br>
Я пытаюсь разработать более корректные правила, но пока что не
получается, может найдете пару минут подскажите в чем ошибка?
<br>
<br>
Все статьи должны передаваться на /index.php?Title=
<br>
причем знак вопроса в названии статьи пытаюсь экранировать с помощью
%3F
<br>
php скрипты разумеется не преобразовываются.
<br>
<br>
      location / {
<br>
          index index.php;
<br>
          error_page 404 = @mediawiki;
<br>
      }
<br>
           location @mediawiki {
<br>
          set $test "A";
<br>
          if ($args ~* ^/.*?\?.*) {
<br>
              set $test  "${test}Q";
<br>
          }
<br>
          if ($args ~* ^/.*?\.php.*) {
<br>
              set $test  "${test}P";
<br>
          }
<br>
          if ($test = A) {
<br>
              rewrite ^/(.*)? /index.php?title=$1 last;
<br>
          }
<br>
          if ($test = AQ) {
<br>
              rewrite ^/([^?]*)(?:\?(.*))? /index.php?title=$1%3F$2
last;
<br>
          }
<br>
          if ($test = AQP) {
<br>
              rewrite ^/(.*)? /$1 last;
<br>
          }
<br>
      }
<br>
           location ~* ^(.)+\.(php)$ {
<br>
          proxy_pass                  <a class="moz-txt-link-freetext"
 href="http://">http://</a>........
<br>
<br>
<br>
proxy pass идет на apache, в нем rewrite не используется.
<br>
<br>
Нет ли у nginx rewrite debug log, по аналогии с apache?
<br>
<br>
Версия nginx 0.6.35<br>
<br>
из "эстетических" соображений при формировании url не используется
urlencode(),<br>
но вроде бы это не должно влиять на правила, тем более что ? я пытаюсь
заменить на %3F самостоятельно.<br>
<br>
С уважением,
<br>
Дмитрий
<br>
<br>
<br>
</div>
</body>
</html>