2013-08-15 13 views
11

Sto provando a configurare Moodle 2.3 (non 2.5) ver con nginx ultima generazione. C'erano alcuni consigli su questo sito prima. Uno di questi: Moodle 2.0 with Nginx backend.Moodle 2.3 con riscrittura Nginx vs slash argomento

Apparentemente come qualcuno sa, Moodle utilizza le regole path_info per pubblicare URL come questo: . Per sfuggire a questo incubo, Moodle offre la possibilità di disattivare gli "argomenti di Slash" nell'interfaccia utente. Che è grandioso. Ma non per il giocatore SCORM che sta forzando "argomento Slash" nonostante l'opzione precedente. Quindi con gli "argomenti Slash disabilitati" tutto funziona e è normale. Ma il mio unico obiettivo è usare il giocatore SCORM.

Ho cercato di usare la regola di riscrittura dal link qui sopra:

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

che non sta funzionando in 2,3-2,5 ver. Presumo abbia funzionato nel 1.9. Ora Moodle utilizza percorso differente:

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

Alcune delle regole 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; 
} 

Si prega di avvisare come risolvere questo.

+0

Si dovrebbe mettere la soluzione come risposta alla propria domanda e accettarlo. –

+1

Inoltre, potresti postare l'intero file di configurazione di nginx? Questo sarebbe molto utile. Grazie! –

risposta

2

(.. Risponde l'OP in una modifica domanda Convertito in una risposta della comunità wiki Vedere Question with no answers, but issue solved in the comments (or extended in chat))

Il PO ha scritto:

ho risolto questo mettendo direttiva riscrittura in {server} non in {location} sezione. Nel mio scenario moodle è installato sotto la sottocartella: 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; 
     } 
     } 
     } 
+0

Supponendo che tutti gli URL contenenti '.php /' vengano riscritti usando '? File =' è sbagliato e potrebbe portare a problemi lungo la traccia! È più sicuro creare corrispondenze più specifiche su 'pluginfile.php /', ecc ... – FMCorz