Подтвердить что ты не робот

Moodle 2.3 с заменой аргумента Nginx vs slash

Я пытаюсь установить Moodle 2.3 (не 2.5) ver с последней версией nginx. Раньше были некоторые советы на этом сайте. Один из них: Moodle 2.0 с бэкэндом Nginx.

Как известно, Moodle использует правила path_info, чтобы опубликовать URL-адрес следующим образом: http://example.com/moodle/pluginfile.php/26/mod_scorm/content/1/index.html. Чтобы избежать всего этого кошмара, Moodle предлагает отключить "Слэш-аргументы" в пользовательском интерфейсе. Это здорово. Но не для SCORM-плеера, который форсирует "Slash argument", несмотря на предыдущий вариант. Таким образом, с отключенными "аргументами слэш" все работает и работает нормально. Но моя единственная цель - использовать SCORM-плеер.

Я попытался использовать правило перезаписи по ссылке выше:

rewrite ^(.*\.php)(/)(.*)$ $1?file=/$3 last;

который не работает в версии 2.3-2.5 ver. Я предполагаю, что он работал в 1.9. Теперь Moodle использует другой путь:

http://example.com/moodle/pluginfile.php/26/mod_scorm/content/1/index.html

Некоторые правила nginx:

location ^~ /moodle {
     location ~*    ^.+\.(?:css|js|htc|xml|jpe?g|gif|png|ico|bmp|svg|swf|pdf|docx?|xlsx?|tiff?|txt|rtf|cgi|bat|pl|dll|aspx?|class|otf|ttf|woff|eot|less)$ {
         add_header  Access-Control-Allow-Origin *;
         access_log off;
         expires 30d;
         tcp_nodelay off;
         try_files $uri =404;
     }
     location ~* ^/moodle/.*\.php$ {
         include      includes/fastcgi_params.conf;
         try_files $uri @dynamic;
         fastcgi_split_path_info ^(.+\.php)(/.+)$;  
         fastcgi_param  PATH_INFO       $fastcgi_path_info;
         fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
         fastcgi_read_timeout 1200;
         fastcgi_keep_conn on;
         fastcgi_pass 127.0.0.1:9090;

     }
     rewrite (^.*\.php)(/.*) $1 last;
}

Пожалуйста, сообщите, как это решить.

4b9b3361

Ответ 1

(Отвечает OP в вопросе редактирования. Преобразован в ответ на wiki сообщества. См. Вопрос без ответов, но проблема разрешена в комментариях (или расширенной в чате))

OP писал (а):

Я решил это, поставив директиву rewrite в {server} не в разделе {location}. В моем сценарии moodle устанавливается под вложенной папкой: example.com/moodle.

server {
     server_name  example.com www.example.com;
     rewrite ^/moodle/(.*\.php)(/)(.*)$ /moodle/$1?file=/$3 last;

  location ^~ /moodle {
     try_files $uri $uri/ /index.php?q=$request_uri;
     index index.php index.html index.htm;

  location ~ \.php$ {
     fastcgi_split_path_info ^(.+\.php)(/.+)$;
     fastcgi_pass 127.0.0.1:9090;   
     include      includes/fastcgi_params.conf;
        }
        }
        }