Guide d'installation de Chamilo LMS 1.11

Merci d'avoir téléchargé Chamilo

Ce guide explique comment installer Chamilo LMS. Nous recommandons activement la lecture complète de ce guide avant de commencer l'installation.

English: Get back to the English version of the installation guide.

Spanish: También puede leer esta guía de instalación en español.

Italiano: puoi leggere questa guida anche in italiano.

Index

  1. Prérequis
  2. Installation de Chamilo LMS
  3. Upgrade depuis une version antérieure de Chamilo/Dok€os
  4. Problèmes
  5. La section d'administration
  6. LDAP 
  7. Formules mathématiques avec Wiris MathType
  8. Indexation full-text avec Xapian
  9. Chamilo Rapid - système de conversion PPT
  10. Configurer de tâches "chronologiques"
  11. Changer l'ordre des noms/prénoms par langue
  12. Améliorer le temps de téléchargement de fichiers
  13. Vidéo-conférence
  14. Configuration de la réécriture


1. Prérequis

Chamilo peut être installé sous Windows, Linux, Max OS X et serveurs UNIX indifféremment. Cela dit, nous recommandons activement l'utilisation d'un serveur Linux pour sa flexibilité optimale, son facile contrôle à distance et sa capacité de redimensionnement. En particulier, nous recommandons la distribution Debian (ou sa petite soeur Ubuntu)

Chamilo est un système de gestion de l'apprentissage (LMS) qui fonctionne principallement sur base d'un serveur web (Apache 2.2+), de MySQL 5.6+ ou de MariaDB 5+ (5 ou 10) et de PHP 5.6 (non recommandé), 7.2 (recommandé) ou 7.3.

Note: avec PHP 7.3, vous devrez désactiver les warnings de PHP ou le paramètre display_errors, sinon l'une des librairies que nous utilisons enverra des alertes continuellement. Ce problème sera réglé dans nos prochaines versions, qui supprimeront le support de PHP 5.6.

Tous ces éléments logiciels sont sous licence de logiciels libres et sont disponibles gratuitement.

Pour faire fonctionner Chamilo LMS sur votre serveur, il est suggéré d'installer WAMP, LAMP ou MAMP (ou leurs composants individuellement):

Serveurs de base de données MySQL ou MariaDB

Vous aurez besoin d'un login et d'un mot de passe pour gérer et supprimer+créer une base de données. Généralement, la configuration par défaut sur des ordinateurs locaux est de permettre la connexion comme utilisateur root avec un mot de passe vide. Il est FORTEMENT RECOMMANDÉ de modifier le mot de passe et de définir un utilisateur avec un accès à une (et une seule) base de données spécifique. Veuillez vous référer à la documentation de MySQL ou MariaDB pour ce faire.
Les versions de Chamilo antérieures à la 1.9.0 nécessitaient de choisir entre une installation sur plusieurs bases et une installation obsolète sur une seule base. Ca a été clarifié et simplifié par l'usage d'une seule base de données.
Si vous ne disposez pas des permissions de suppression+création de la base de données choisie, Chamilo ne pourra pas terminer l'installation car, pour éviter tout déchêt d'une version antérieure de Chamilo ou d'un autre système, nous supprimons d'abord la base de données avant de la recréer. C'est expliqué dans un peu plus de détail dans cette demande

Redirections d'Apache

Depuis sa version 1.10, Chamilo exige que le serveur web puisse gérer les redirections. Il s'agit d'un pré-requis très commun de nos jours pour les applications web (autant CMS que LMS, ERP, etc) qui permet, entre autres, l'utilisation intelligente et user-friendly des URLs.
Si vous utilisez un autre serveur web qu'Apache, dirigez-vous à la section "Configuration de la réécriture" en fin de ce document.
Si vous utilisez Apache, la configuration des redirections se fait en deux étapes simples: Pour Apache <=2.2 (remplacez /var/www/chamilo par le chemin vers votre répertoire de Chamilo):
    <Directory />
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
    <Directory /var/www/chamilo/>
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
    
et pour Apache >=2.4:
    <Directory />
        AllowOverride All
        Require all granted
    </Directory>
    <Directory /var/www/chamilo/>
        AllowOverride All
        Require all granted
    </Directory>
    

Une fois configurée cette partie (qui est peut-être déjà mise en place par votre fournisseur d'hébergement), il suffit de redémarrer le serveur web pour activer la modification.

2. Installation de Chamilo LMS

Avant d'installer Chamilo LMS, vous devez comprendre que du fait que Chamilo est un logiciel libre, de nombreux prestataires de service ont été en mesure de développer des extensions pour Chamilo, qui ont rendu son installation possible par différents biais :

Ce guide couvre uniquement les deux dernières méthodes. Pour les premières, veuillez consulter votre fournisseur de services pour plus d'infos.

Pour installer Chamilo LMS, suivez ces 6 étapes :
  1. Télécharger Chamilo LMS
  2. Décompressez-le
  3. Copiez le répertoire de Chamilo dans le répertoire racine de votre serveur web. Celui-ci peut se trouver dans C:\xampp\htdocs\ sur une machine Windows avec WAMP, ou dans /var/www/html/ (ou /var/www/) sur un serveur Linux
  4. Vérifiez que votre serveur web supporte les .htaccess (Voir la section "Configuration de la réécriture" plus bas)
  5. Ouvrez votre navigateur (Firefox, Chrome, ...) et tapez l'adresse suivante http://localhost/chamilo/ si vous l'avez installé localement ou http://www.domain.com/chamilo/ si vous l'avez installé à distance*
  6. Suivez le processus d'installation. Vous pouvez accepter toutes les valeurs par défaut. Pensez à modifier le mot de passe d'administrateur afin de vous en souvenir plus tard.
* Nous recommandons de définir un Virtual Host spécifique pour cette installation, si vous avez les compétences pour ce faire
Note: si vous installez Chamilo localement en utilisant "localhost" ou l'adresse IP de votre ordinateur durant l'installation, vous pourriez rencontrer des difficultés lors de l'accès depuis d'autres ordinateurs. Pour éviter ça, vous pouvez appliquer une petite modification à votre fichier de configuration.

Les répertoires suivants doivent êtres lisibles, éditables et exécutables par votre serveur web.
Note: Cela ne requiert généralement pas de modification spécifique sous Windows (ce qui est d'ailleurs l'une des raisons principales pour l'existence d'autant de virus et malware pour ce système d'exploitation, mais cela demande l'utilisation de "chmod" sous Linux et Mac. Dans ces derniers cas, veuillez suivre les instructions qui suivent.

Remplacez [chamilo] par le répertoire où vous avez placé le contenu du zip: Optionnellement, vous pouvez faire la même chose pour les répertoires suivants si vous souhaitez permettre l'envoi de styles CSS ou la définition de nouvelles langues par les administrateurs de Chamilo:
Si vous trouvez un répertoire tests/ à la racine, veuillez le supprimer. Il s'agit d'un répertoire de développement qui ne bénéficie pas des vérifications de sécurité nécessaires pour un système en production. Il ne devrait en tout cas *jamais* être accessible aux utilisateurs finaux sur un système en production.

Sous les systèmes d'exploitation Linux, Mac OS X et BSD, vous pouvez utiliser la commande chmod 0775 pour modifier les permissions, bien que nous recommandions, pour des raisons de sécurité, de cherchez l'assistance d'un administrateur système expérimenté pour le faire. Sous Windows, vous pourriez avoir besoin de vérifier les propriétés de ces répertoires (en cliquant dessus avec le bouton droit de la souris).

Sécurité : liste à vérifier après l'installation


Configuration de PHP

Pour obtenir le meilleur de votre installation de Chamilo, vous devez configurer vos paramètres PHP:
max_execution_time = 300 ;Maximum execution time of each script, in seconds
max_input_time = 600 ;Maximum amount of time each script may spend parsing request data
memory_limit = 128M ;Maximum amount of memory a script may consume (128MB)
post_max_size = 100M
upload_max_filesize = 100M;
short_open_tag = Off
safe_mode = Off
magic_quotes_gpc = Off
magic_quotes_runtime = Off

Important : Vous aurez besoin de définir votre date.timezone en fonction de votre fuseau horaire. Par exemple si votre serveur se trouve dans la zone America/New_York, indiquez cette valeur pour le paramètre date.timezone du fichier php.ini :

date.timezone = 'America/New_York'

Note: PHP 5.3.9 introduit un nouveau paramètre appelé "max_input_vars", qui limite le nombre d'éléments que vous pouvez envoyer au travers d'un formulaire déterminé. Si vous devez gérer de grandes quantités d'utilisateurs ou de longs parcours d'apprentissage (de nombreux éléments), assurez-vous de configurer ce paramètre plus haut que se valeur par défault de 1000.

Utilisateurs de BSD: les librairies suivantes doivent être inclues durant l'installation de PHP:

Nous recommandons aussi les extensions suivantes:

Certains sections de ce manuel ne sont pas encore traduites. N'hésitez pas à consulter le forum de Chamilo si la lecture en anglais vous est impossible.

3. Mettre à jour depuis une version antérieure de Chamilo LMS (1.*) ou de Dok€os (<2.0)

Avant de mettre à jour, nous recommandons chaudement la prise d'une copie de sauvegarde de votre installation (répertoires et bases de données). Si vous ne savez pas comment faire, consultez votre fournisseur d'hébergement ou un administrateur système qualifié avant de continuer l'installation.

Chamilo LMS 1.10 (et donc 1.11) est livré avec une nouvelle structure de bases de données en comparaison avec 1.8. Bien que le script de migration la prenne complètement en charge, il pourrait générer une surcharge sur votre serveur durant la mise à jour, et il changera la base de données de façon assez profonde, préservant les données le mieux possible (nous avons testé la procédure de nombreuses fois, mais rappelez-vous qu'il s'agit d'un logiciel GNU/GPLv3 et que nous ne saurions être tenus pour responsables de ce qui pourrait arriver à vos données sans la supervision d'un professionnel). C'est pour cela que nous recommandons *vraiment* de faire un backup complet de votre système avant la mise à jour.

Notez également que Chamilo LMS 1.10 (et donc 1.11) agrège les fichiers du dossier main/lang en un fichier unique par langue. Si vous avez modifiez les fichiers de langue directement (plutôt que d'utiliser la méthode recommandée des sous-langages), vous devriez faire une copie des traductions modifiées avant la mise à jour. Les sous-langages nécessitent également un peu de travail manuel, mais la procédure de mise à jour n'y touchera pas directement.

NOTE: Pour les bases de données très lourdes de Chamilo, certains de nos fournisseurs officiels ont dévelopé des procédures de migration optimisées qui utilisent plus de mémoire mais exécutent les migrations beaucoup plus rapidement. Si c'est le genre de choses qui vous intéresse, nous vous recommandons chaudement de les contacter (voir références ci-dessous).
NOTE: Cette version de Chamilo peut seulement être utilisée pour mettre à jour des versions antérieures de Chamilo ou de Dok€os. Par exemple vous ne pouvez pas utiliser les scripts de mise à jour normaux de Chamilo 1.11 pour effectuer une mise à jour depuis Dok€os 2.0 (dont la sortie est ultérieure à celle de la création de Chamilo). Si vous avez besoin de ce genre de choses, nous vous conseillons de contacter les fournisseurs officiels de l'Association Chamilo)

3.1 Mettre à jour depuis Chamilo 1.11.x (upgrade mineure)

Comme cette version est une version mineure de Chamilo par rapport à une quelconque version 1.11.*, les seuls pas à suivre sont:

3.2 Mettre à jour depuis Chamilo 1.9.x ou 1.10.x


* Les styles et images se trouvent dans les répertoires main/css ou main/img. Vous pouvez les récupérer depuis la copie de sauvegarde (que vous n'avez pas manqué de prendre). Toute image ou style modifié qui utilise le nom de l'image/style par défaut sera écrasé lors de l'étape suivante. Pour éviter la perte de customisations, assurez-vous toujours de copier les styles/images sous un nouveau nom et de modifier la copie et non l'original. L'original sera toujours écrasé par la nouvelle version. Dans Dok€os 1.8.5, nous avons changé le nom de quelques thèmes CSS. La compatibilité descendante est assurée par le fait que la mise à jour ne fait qu'ajouter de nouveaux thèmes, mais essayez toujours d'utiliser de préférence les nouveaux thèmes plutot que se conserver d'anciennes versions qui ne seront plus maintenues.

ATTENTION:
Ne supprimez pas le précédent dossier d'installation de Chamilo avant d'avoir installé le nouveau. Quand la mise à jour sera terminée, les dossiers obsolètes devraient être automatiquement pris en charge.

3.3 Mettre à jour depuis Chamilo 1.8.x

Pour mettre à jour depuis une version antérieure à la 1.9.0, vous devrez commencer par la mettre à jour vers la version 1.9.10.x, et seulement alors mettre à jours vers la 1.11.x. Vous pouvez trouver une version téléchargeable de 1.9.10.x ici: https://github.com/chamilo/chamilo-lms/releases

3.4 Dans les deux derniers cas

Les répertoires suivants doivent être accessibles en lecture, écriture et exécution pour le serveur web: On Linux, Mac OS X and BSD operating systems you can quick-fix this using the chmod 0777 command, but if you are unsure, we recommend you seek advice for your own OS on our forum. In Windows, you may need to check the properties of the folders.


4. Problèmes

If you have problems, go to the Chamilo website and ask a question on the support forum. Please read the previous messages first to see if there is already an answer to your question.


5. Section d'administration

Pour accéder à la section d'administration, ouvrez un navigateur, chargez l'adresse de votre Chamilo et connectez-vous avec l'utilisateur administrateur. Vous verrez alors un onglet "Administration" dans le menu principal. Vous pouvez y gérer les utilisateurs, les cours, les sessions et l'apparence de votre site


6. LDAP

This part is optional, only organisations with an LDAP server will need to read this.
An LDAP module is already provided in Chamilo, but it has to be configured to make it work.

Compiler

Linux servers: It's possible that you have to recompile php with ldap support. Newer distributions also allow downloading rpms for additional packages.

Activer LDAP dans Chamilo

Note: Vérifiez la configuration LDAP dans Chamilo pour voir le détail

In [Chamilo folder]/app/config/configuration.php, around line 93, you'll find settings like the following:
// -> Uncomment the two lines below to activate LDAP AND edit main/inc/conf/auth.conf.php for configuration
// $extAuthSource["extldap"]["login"] = $_configuration['root_sys'].$_configuration['code_append']."auth/external_login/login.ldap.php";
// $extAuthSource["extldap"]["newUser"] = $_configuration['root_sys'].$_configuration['code_append']."auth/external_login/newUser.ldap.php";

remove the // from the last two lines to activate LDAP.

Settings

Ask the LDAP server admin for the settings:

Since 1.8.5, you have to change the LDAP settings inside the "Portal administration" panel, under "Chamilo configuration settings", section "LDAP".
As an example, you should find the following kind of values:
LDAP main server's address: "myldapserver.com"; // your ldap server
LDAP main server's port: 389; // your ldap server's port number
LDAP domain: "dc=xx, dc=yy, dc=zz"; //domain

Teacher/student status

By default, Chamilo will check if the "employeenumber" field has a value. If it has, then Chamilo will consider this user as being a teacher.
If you want to change this behaviour, you can edit main/auth/ldap/authldap.php, function ldap_put_user_info_locally(), and change the if (empty($info_array[$tutor_field])) condition to whatever suits you.
You can also remove this check by removing the condition and leaving only the $status = STUDENT; line.

Protected LDAP servers

Some LDAP servers do not support anonymous use of the directory services.
In this case, you should fill in the appropriate fields in the administration panel (e.g. "manager" and "mypassword") and Chamilo will try to authenticate using these, or fall back to anonymous mode before giving up.

LDAP import into sessions

There is a new set of scripts now that allow you to insert users from LDAP directly into a Chamilo session. This, however, relies on a set of static choices in the LDAP contact attributes.
The fields used intensively by the Chamlio module are:


7. Formules mathématiques avec Wiris MathType

En installant ce plugin, vous intégrez Wiris MathType.
Cette activation ne sera pas complète à moins que vous n'ayez d'abord téléchargé le plugin PHP pour CKeditor WIRIS et l'ayez décompressé dans main/inc/lib/javascript/ckeditor/plugins/ckeditor_wiris.

Cette étape est nécessaire parce que WIRIS est un logiciel propriétaire et ses services sont de type commerciaux. Pour faire des modifications au plugin , éditez le fichier configuration.ini ou remplacez son contenu par le fichier configuration.ini.default de Chamilo.


8. Indexation full-text avec Xapian

Note: This step will require a dedicated server or a virtual dedicated server as the packages involved are not available on most shared hosting solutions.
On Debian or Ubuntu 10.04 and superior, you will simply need to install the php5-xapian package and restart your web server:
sudo apt-get install php5-xapian
sudo /etc/init.d/apache2 restart
            
Then go to your administration page -> Configuration settings -> Search and enable the search tool. Follow the recommendations on the page to get the complete indexing suite installed. Once you're done, all documents you import into your Chamilo portal in a recognized format will be indexed and searchable. Chamilo Administrators training (which you can ask any Chamilo's Official Provider for) include a full review of the full-text search feature.

Note: Xapian's licensing for the PHP extension is a bit different than what is necessary to enter the Debian repositories, so it has been excluded. You can, however, generate your own package by following the packaging instructions on Xapian's wiki.


9. Chamilo Rapide - Conversion de PPT

Note: This step will require a dedicated server or a virtual dedicated server as the packages involved are not available on most shared hosting solutions.
On Debian or Ubuntu 11.10 and superior, install LibreOffice.org v3 and start it as a headless server:
sudo apt-get install libreoffice
sudo soffice -accept="socket,host=127.0.0.1,port=2002,tcpNoDelay=1;urp;" -headless -nodefault -nofirststartwizard -nolockcheck -nologo -norestore &
        
Then go to your administration page -> Chamilo Rapid and set the host to "localhost" and the port to "2002". Save. Go to your course, learning path tool and see the new icon appeared. Import your PPT. This should work. Note: Sometimes, this doesn't work out so easily. You can probably ask for the assistance of any system administrator around with a bit of Java and PHP experience, or you can always ask one of the Chamilo's Official Providers for assistance (ask for a guaranteed commercial contract).

10. Configurer les tâches chronologiques

Since Chamilo 1.8.8, a few tasks need to be executed regularly in order to get the best out of your server resources. One of such tasks (and the only one around at the time of Chamilo 1.8.8) is the sending of internal messaging notifications by e-mail, i.e. when you receive an e-mail from another person or from a group inside the internal messaging system of Chamilo, if all e-mails are sent immediately, then you might not have the chance to receive them at your pace, once a day or even once a week. For cases like this you, as a Chamilo administrator, should setup a cron process on the server to check the queue of e-mails and send is timely.

Setting up a cron task is easy and there are several ways to do it. We recommend you have a look at the Drupal documentation for setting up cron and define your own cron process as:
35 * * * * wget -O - -q -t 1 http://campus.example.com/main/cron/run.php
    
Make sure you have a look into run.php as maybe you want to change a few settings there.

11. Changer l'ordre nom/prénom des langues

As Chamilo becomes more popular and crosses many borders now, it frequently happens that administrators want to re-order the firstname and lastname fields in tables, and also on which field it is sorted first.

This can easily be modified by editing the app/config/configuration.php file, finding the following section, uncommenting the PHP lines and adapting it to your language:
// Custom name_order_conventions
//$_configuration['name_order_conventions'] = array(
// 'french' => array('format' => 'title last_name first_name', 'sort_by' => 'last_name')
//);

Feel free to change this to
// Custom name_order_conventions
$_configuration['name_order_conventions'] = array(
 'french' => array('format' => 'first_name last_name', 'sort_by' => 'last_name')
);

for example. The effect should be immediate.
Please note that, although Chamilo allows you to define its position, the "title" field does not exist at this time, so no need to worry about it.

12. Améliorer la performance des téléchargements de fichiers

File download can be very slow when passing through a PHP script to control permissions. One solution to this is to use the X-Sendfile header, which depends on a module on the webserver. Check http://stackoverflow.com/a/3731639/1406662 for more details on implementing Sendfile. Chamilo LMS 1.9.8 (and following versions) supports the X-Sendfile headers, but requires a specific line of configuration to be added to configuration.php:
$_configuration['enable_x_sendfile_headers'] = true;
If you have issues with files taking a long time to download, make sure you reconfigure your webserver and add this line. You should see an notable difference in download time.

13. Vidéo-conférence

Chamilo supporte la connexion à deux serveurs de vidéo-conférence : BigBlueButton (versions 0.81 et 0.9) et OpenMeetings.
Tandis que BigBlueButton paraît plus simple d'installation, plus clairement documenté et plus abouti esthétiquement, certains utilisateurs ont attesté que OpenMeetings consomme moins de bande passante, est moins restrictif en termes d'environnement et offre plus d'outils et de connecteurs.
La décision vous revient, mais dans chaque cas vous aurez à installer un serveur de vidéo-conférence en plus du processus d'installation normal de Chamilo.
Consultez le guide d'installation de BigBlueButton Une fois celui-ci installé, entrez la commande "bbb-conf --secret" pour obtenir les paramètres à indiquer dans le plugin "Vidéo-conférence" de Chamilo (page Paramètres de configuration).
Une icône "Vidéo-conférence" devrait alors apparaître dans chaque cours.


14. Réécriture

Chamilo LMS 1.10 est la première version nécessitant que le serveur web autorise les redirections d'url (et donc 1.11 également).
Pour Apache, il s'agit d'active le module rewrite et d'autoriser l'utilisation des fichiers .htaccess ou d'ajouter une section spécifique dans le Virtual Host.
Pour Nginx, il s'agit de définir les règles de redirections dans le Virtual Host.

Pour être certain que c'est à la portée de tous, nous recommandons le fichier de configuration ci-dessous pour vous aider dans les deux cas. Notez que l'utilisation d'un fichier .htaccess est la solution la plus facile mais peut altérer les performances de votre serveur, car les fichiers .htaccess sont interprêtés à *chaque* requête, alors qu'une section de configuration supplémentaire dans le Virtual Host est compilée uniquement lors du chargement du serveur.

Apache + .htaccess

Pour activer le .htaccess dans Apache, vous devez juste vérifier une chose : dans un tag <Directory> du dossier racine de Chamilo, vérifiez que les lignes suivantes sont présentes :
        AllowOverride All
		Order allow,deny
		allow from all
ou, si vous travaillez avec Apache 2.4, la syntaxe est légèrement différente et ressemble plutôt à ça :
        AllowOverride All
        Require all granted

Apache RewriteRules

  <LocationMatch "/.git*">
	order deny,allow
	deny from all
  </LocationMatch>

  <Directory ~/.>
    AllowOverride None
	Options -Indexes
  </Directory>

  <Directory "/var/www/chamilo">
	RewriteEngine On
	RewriteCond %{QUERY_STRING} ^id=(.*)$
    RewriteRule ^certificates/$ certificates/index.php?id=%1 [L]
    RewriteRule ^courses/([^/]+)/?$ main/course_home/course_home.php?cDir=$1 [QSA,L]
    RewriteRule ^courses/([^/]+)/index.php$ main/course_home/course_home.php?cDir=$1 [QSA,L]
    RewriteRule ^courses/([^/]+)/scorm/(.*([\.js|\.css|\.png|\.jpg|\.jpeg|\.gif]))$ app/courses/$1/scorm/$2 [QSA,L]
    RewriteRule ^courses/([^/]+)/scorm/(.*)$ main/document/download_scorm.php?doc_url=/$2&cDir=$1 [QSA,L]
    RewriteRule ^courses/([^/]+)/document/certificates/(.*)$ app/courses/$1/document/certificates/$2 [QSA,L]
    RewriteRule ^courses/([^/]+)/document/(.*)$ main/document/download.php?doc_url=/$2&cDir=$1 [QSA,L]
    RewriteRule ^courses/([^/]+)/upload/course_home_icons/(.*([\.js|\.css|\.png|\.jpg|\.jpeg|\.gif]))$ app/courses/$1/upload/course_home_icons/$2 [QSA,L]
    RewriteRule ^courses/([^/]+)/upload/([^/]+)/(.*)$ main/document/download_uploaded_files.php?code=$1&type=$2&file=$3 [QSA,L]
    RewriteRule ^courses/([^/]+)/work/(.*)$ main/work/download.php?file=work/$2&cDir=$1 [QSA,L]
    RewriteRule ^courses/([^/]+)/course-pic85x85.png$ main/inc/ajax/course.ajax.php?a=get_course_image&code=$1&image=course_image_source [QSA,L]
    RewriteRule ^courses/([^/]+)/course-pic.png$ main/inc/ajax/course.ajax.php?a=get_course_image&code=$1&image=course_image_large_source [QSA,L]
    RewriteRule ^courses/([^/]+)/(.*)$ app/courses/$1/$2 [QSA,L]
    RewriteRule ^session/(\d{1,})/about/?$ main/session/about.php?session_id=$1 [L]
    RewriteRule ^course/(\d{1,})/about/?$ main/course_info/about.php?course_id=$1 [L]
    RewriteRule ^badge/(\d{1,}) main/badge/issued.php?issue=$1 [L]
    RewriteRule ^skill/(\d{1,})/user/(\d{1,}) main/badge/issued_all.php?skill=$1&user=$2 [L]
    RewriteRule ^badge/(\d{1,})/user/(\d{1,}) main/badge/issued_all.php?skill=$1&user=$2 [L]
    RewriteRule ^main/exercice/(.*)$ main/exercise/$1 [QSA,L]
    RewriteRule ^main/newscorm/(.*)$ main/lp/$1 [QSA,L]
    RewriteRule ^service/(\d{1,})$ plugin/buycourses/src/service_information.php?service_id=$1 [L]
    RewriteRule ^lti/os$ plugin/ims_lti/outcome_service.php [L]
    RewriteRule ^([^/.]+)/?$ user.php?$1 [L]
    RewriteRule ^(tests|.git) - [F,L,NC]
  </Directory>

Nginx

Nginx ne supporte pas les règles .htaccess, donc vous n'avez pas d'autre option que d'appliquer les règles suivantes (notez que la configuration PHP peut changer). Ce sont uniquement les redirections à placer dans un bloc server{}, comme les autres valeurs peuvent changer d'une installation à l'autre.
  # Add your own "server {" header here with listen, server_name, access_log, error_log, index, root and error_page params

  charset utf-8;

  location @rewrite{
    rewrite ^certificates/$ certificates/index.php last;
    rewrite ^/courses/([^/]+)/$ /main/course_home/course_home.php?cDir=$1 last;
    rewrite ^/courses/([^/]+)/index.php$ /main/course_home/course_home.php?cDir=$1 last;
    rewrite ^/courses/([^/]+)/scorm/(.*([\.js|\.css|\.png|\.jpg|\.jpeg|\.gif]))$ app/courses/$1/scorm/$2 last;
    rewrite ^/courses/([^/]+)/scorm/(.*)$ /main/document/download_scorm.php?doc_url=/$2&cDir=$1 last;
    # Alternatively, you can choose to give direct access to all SCORM files, which is much faster but less secure
    # rewrite "^/courses/([^/]+)/scorm/(.*)$" /app/courses/$1/scorm/$2 break;
    rewrite "^/courses/([^/]+)/document/certificates/(.*)$" /app/courses/$1/document/certificates/$2 last;
    rewrite ^/courses/([^/]+)/document/(.*)$ /main/document/download.php?doc_url=/$2&cDir=$1 last;
    rewrite ^/courses/([^/]+)/upload/([^/]+)/(.*)$ /main/document/download_uploaded_files.php?code=$1&type=$2&file=$3 last;
    rewrite ^/courses/([^/]+)/work/(.*)$ /main/work/download.php?file=work/$2&cDir=$1 last;
    rewrite ^/courses/([^/]+)/upload/course_home_icons/(.*([\.png|\.jpg|\.jpeg|\.gif]))$ app/courses/$1/upload/course_home_icons/$2 last;
    rewrite ^/courses/([^/]+)/(.*)$ /app/courses/$1/$2 last;
    rewrite ^/session/([^/]+)/about/?$ /main/session/about.php?session_id=$1 last;
    rewrite ^/badge/(\d+) /main/badge/issued.php?issue=$1 last;
    rewrite ^/skill/(\d+)/user/(\d+)$ /main/badge/issued_all.php?skill=$1&user=$2 last;
    rewrite ^/badge/(\d+)/user/(\d+)$ /main/badge/issued_all.php?skill=$1&user=$2 last;
    rewrite ^/main/exercice/(.*)$ /main/exercise/$1 last;
    rewrite ^/main/newscorm/(.*)$ /main/lp/$1 last;
    rewrite ^/service/(\d+)$ /plugin/buycourses/src/service_information.php?service_id=$1 last;
    rewrite "^/main/upload/users/(.*)/(.*)/my_files/(.*)$" /app/upload/users/$1/$2/my_files/$3 last;

    try_files $uri /index.php$is_args$args;
    break;
  }

  location / {
    rewrite ^/courses/([^/]+)/$ /main/course_home/course_home.php?cDir=$1 last;
    rewrite ^/courses/([^/]+)/index.php$ /main/course_home/course_home.php?cDir=$1 last;
    rewrite ^/skill/(\d+)/user/(\d+)$ /main/badge/issued_all.php?skill=$1&user=$2 last;
    rewrite ^/badge/(\d+)/user/(\d+)$ /main/badge/issued_all.php?skill=$1&user=$2 last;
    try_files $uri @rewrite;
  }

  location /main {
    rewrite ^/main/admin/$ /main/admin/index.php last;
  }

  location ~ \.php$ {
    client_max_body_size 20M;
    try_files $uri /index.php$is_args$args;

    rewrite ^/certificates/$ /certificates/index.php?id=%1  last;
    rewrite ^/courses/([^/]+)/$ /main/course_home/course_home.php?cDir=$1 last;
    rewrite ^/courses/([^/]+)/index.php$ /main/course_home/course_home.php?cDir=$1 last;
    rewrite ^/session/([^/]+)/about/?$ /main/session/about.php?session_id=$1 last;
    rewrite ^/badge/([^/]+) /main/badge/issued.php?issue=$1 last;
    rewrite ^/main/exercice/(.+)$ /main/exercise/$1 last;
    rewrite ^/main/newscorm/(.+)$ /main/lp/$1 last;

    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_split_path_info ^(.+\.php)(/.*)$;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param HTTPS off;
  }

  # Serve static files directly
  location ~* \.(png|jpe?g|gif|ico|js|css|mp3|swf|flv|mp4|ogg|woff|woff2)$ {
    rewrite ^/courses/([^/]+)/course-pic85x85.png$ /app/courses/$1/course-pic85x85.png last;
    rewrite ^/courses/([^/]+)/course-pic.png$ /app/courses/$1/course-pic.png last;
    rewrite ^/courses/([^/]+)/scorm/(.*)$ /main/document/download_scorm.php?doc_url=/$2&cDir=$1 last;
    rewrite ^/courses/([^/]+)/document/(.*)$ /main/document/download.php?doc_url=/$2&cDir=$1 last;
    rewrite ^/courses/([^/]+)/work/(.*)$ /main/work/download.php?file=work/$2&cDir=$1 last;
    rewrite ^/courses/([^/]+)/upload/(.*)$ /app/courses/$1/upload/$2 last;
    # For all these media resources not treated by previous rewrites, give direct access (no permission check)
    rewrite ^/courses/(.*)$ /app/courses/$1 break;
    expires 30d;
    access_log off;
    try_files $uri @rewrite;
  }

  location ~ ~\.(ht|git){
    deny all;
  }
  location ^~ /tests/ {
    deny all;
  }

IIS

Les utilisateurs @ullfindsmit et @rozepeda sur Github ont été bien aimables en contribuant à la configuration suivante pour IIS, qu'ils ont testé au préalable. Ces règles sont basées sur les configurations ci-dessus et, bien que nous n'ayons pas testé la configuration nous-même, elle est suffisamment proche de la configuration d'Apache et de Nginx pour nous permettre de vous la suggérer ici:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <httpRedirect enabled="false" destination="" httpResponseStatus="Permanent" />
        <rewrite>
            <rules>
                <rule name="rule 1v" stopProcessing="true">
                    <match url="^certificates/$" />
                    <action type="Rewrite" url="certificates/index.php?id=%1" appendQueryString="false" />
                </rule>
                <rule name="rule 2v" enabled="true" stopProcessing="true">
                    <match url="^courses/([^/]+)/?$" />
                    <action type="Rewrite" url="main/course_home/course_home.php?cDir={R:1}" appendQueryString="true" />
                </rule>
                <rule name="rule 3v" enabled="true" stopProcessing="true">
                    <match url="^courses/([^/]+)/index.php$" />
                    <action type="Rewrite" url="main/course_home/course_home.php?cDir={R:1}" />
                </rule>
                <rule name="rule 4v" stopProcessing="true">
                    <match url="^courses/([^/]+)/scorm/(.*([\.js|\.css|\.png|\.jpg|\.jpeg|\.gif]))$" />
                    <action type="Rewrite" url="app/courses/{R:1}/scorm/{R:2}" />
                </rule>
                <rule name="rule 5v" stopProcessing="true">
                    <match url="^courses/([^/]+)/scorm/(.*)$" />
                    <action type="Rewrite" url="main/document/download_scorm.php?doc_url=/{R:2}&cDir={R:1}" />
                </rule>
                <rule name="rule v6" stopProcessing="true">
                    <match url="^courses/([^/]+)/document/certificates/(.*)$" />
                    <action type="Rewrite" url="app/courses/{R:1}/document/certificates/{R:2}" />
                </rule>
                <rule name="rule v7" stopProcessing="true">
                    <match url="^courses/([^/]+)/document/(.*)$" />
                    <action type="Rewrite" url="main/document/download.php?doc_url=/{R:2}&cDir={R:1}" />
                </rule>
                <rule name="rule v8" stopProcessing="true">
                    <match url="^courses/([^/]+)/upload/course_home_icons/(.*([\.js|\.css|\.png|\.jpg|\.jpeg|\.gif]))$" />
                    <action type="Rewrite" url="app/courses/{R:1}/upload/course_home_icons/{R:2}" />
                </rule>
                <rule name="rule v9" stopProcessing="true">
                    <match url="^courses/([^/]+)/upload/([^/]+)/(.*)$" />
                    <action type="Rewrite" url="main/document/download_uploaded_files.php?code={R:1}&type={R:2}&file={R:3}" />
                </rule>
                <rule name="rule v10" stopProcessing="true">
                    <match url="^courses/([^/]+)/work/(.*)$" />
                    <action type="Rewrite" url="main/work/download.php?file=work/{R:2}&cDir={R:1}" />
                </rule>
                <rule name="rule v11" stopProcessing="true">
                    <match url="^courses/([^/]+)/course-pic85x85.png$" />
                    <action type="Rewrite" url="main/inc/ajax/course.ajax.php?a=get_course_image&code={R:1}&image=course_image_source" appendQueryString="true" />
                </rule>
                <rule name="rule v12" stopProcessing="true">
                    <match url="^courses/([^/]+)/course-pic.png$" />
                    <action type="Rewrite" url="main/inc/ajax/course.ajax.php?a=get_course_image&code={R:1}&image=course_image_large_source" appendQueryString="true" />
                </rule>
                <rule name="rule v13" stopProcessing="true">
                    <match url="^courses/([^/]+)/(.*)$" />
                    <action type="Rewrite" url="app/courses/{R:1}/{R:2}" appendQueryString="false" />
                </rule>
                <rule name="rule v14" stopProcessing="true">
                    <match url="^session/(\d{1,})/about/?$" />
                    <action type="Rewrite" url="main/session/about.php?session_id={R:1}" appendQueryString="false" />
                </rule>
                <rule name="rule v15" stopProcessing="true">
                    <match url="^course/(\d{1,})/about/?$" />
                    <action type="Rewrite" url="main/course_info/about.php?course_id={R:1}" appendQueryString="false" />
                </rule>
                <rule name="rule v16" stopProcessing="true">
                    <match url="^badge/(\d{1,})" />
                    <action type="Rewrite" url="main/badge/issued.php?issue={R:1}" appendQueryString="false" />
                </rule>
                <rule name="rule v17" stopProcessing="true">
                    <match url="^skill/(\d{1,})/user/(\d{1,})" />
                    <action type="Rewrite" url="main/badge/issued_all.php?skill={R:1}&user={R:2}" appendQueryString="false" />
                </rule>
                <rule name="rule v18" stopProcessing="true">
                    <match url="^badge/(\d{1,})/user/(\d{1,})" />
                    <action type="Rewrite" url="main/badge/issued_all.php?skill={R:1}&user={R:2}" appendQueryString="false" />
                </rule>
                <rule name="rule v19" stopProcessing="true">
                    <match url="^main/exercice/(.*)$" />
                    <action type="Rewrite" url="main/exercise/{R:1}" appendQueryString="true" />
                </rule>
                <rule name="rule v20" stopProcessing="true">
                    <match url="^main/newscorm/(.*)$" />
                    <action type="Rewrite" url="main/lp/{R:1}" appendQueryString="true" />
                </rule>
                <rule name="rule v21" stopProcessing="true">
                    <match url="^service/(\d{1,})$" />
                    <action type="Rewrite" url="plugin/buycourses/src/service_information.php?service_id={R:1}" appendQueryString="false" />
                </rule>
                <rule name="rule v22" stopProcessing="true">
                    <match url="^lti/os$" />
                    <action type="Rewrite" url="plugin/ims_lti/outcome_service.php" appendQueryString="false" />
                </rule>
                <rule name="rule v23" stopProcessing="true">
                    <match url="^([^/.]+)/?$" />
                    <action type="Rewrite" url="user.php?{R:1}" appendQueryString="false" />
                </rule>
                <rule name="rule v24" stopProcessing="true">
                    <match url="^(tests|.git)" ignoreCase="false" />
                    <action type="Rewrite" url="/-" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>
        



Adresse de contact
Mail: info@chamilo.org



Valid XHTML 1.0 Transitional Valid CSS