Router konfigurieren

Aus MoodleDocs
Wechseln zu:Navigation, Suche

Neue Funktionalität
in Moodle 4.5!

Diese Seite soll Systemadministratoren dabei helfen, die als Teil von Moodle 4.5 erstellte Routing-Engine korrekt zu konfigurieren.

Ab Moodle 4.5 enthält Moodle eine Routing-Engine, mit der Anfragen dynamisch ohne Dateien an bestimmten Speicherorten bedient werden können.

Die Verwendung dieser Routen kann dazu beitragen, ansprechendere URLs bereitzustellen, die leichter zu merken und benutzerfreundlicher sind. Dies soll auch beim SEO-Ranking helfen.

Die Konfiguration des Moodle-Routers ist ab Moodle 5.1 obligatorisch.

Der von Moodle verwendete Routertyp ist als Front Controller bekannt.

Was der Webserver tun muss

In vielen Fällen fordert jemand eine Datei an, die wie gewünscht auf der Festplatte verfügbar ist. Wenn die Person beispielsweise https://example.com/course/view.php?id=42 anfordert, bezieht sich dies auf eine Datei unter /course/view.php.

In anderen Fällen greift jemand jedoch möglicherweise auf eine URL zu, die nicht direkt mit einer Datei auf der Festplatte verknüpft ist. Wenn die Person beispielsweise https://example.com/course/42/manage anfordert, muss dies stattdessen vom Moodle-Router verarbeitet werden.

Der Moodle-Router befindet sich unter /r.php.

Konfiguration des Webservers

Moodle unterstützt eine Vielzahl von Webservern. Die hier aufgeführten Anleitungen sind allgemeiner Natur und die Konfigurationsbeispiele entsprechen möglicherweise nicht genau Ihren Gegebenheiten.

Apache2 konfigurieren

Apache2 kann so konfiguriert werden, dass es den Moodle-Router unterstützt, indem Sie in der Directory-Konfiguration einen FallbackResource angeben.

DocumentRoot /var/www/moodle/public
<Directory /var/www/moodle/public>
    AllowOverride None
    Require all granted
    FallbackResource /r.php
</Directory>

Die FallbackResource bezieht sich auf das DocumentRoot-Verzeichnis der Website. Wenn sich Ihr Moodle also in einem Unterverzeichnis befindet, müssen Sie die vollständige URL angeben:

DocumentRoot /var/www/moodle/public
<Directory /var/www/moodle/public/moodle>
    AllowOverride None
    Require all granted
    FallbackResource /moodle/r.php
</Directory>

Nginx konfigurieren

Der Nginx-Server unterstützt die Verwendung einer try_files-Direktive, die in der angegebenen Reihenfolge nach Dateien sucht und die erste gefundene Datei für die Verarbeitung verwendet.

location / {
    try_files $uri /r.php
}

Wenn sich Ihre Moodle-Website in einem Unterverzeichnis befindet, müssen Sie einen genaueren Speicherort angeben.

location /moodle/ {
  try_files $uri $uri/ /moodle/r.php;
}

Wenn Sie mehrere Moodles hosten, möchten Sie möglicherweise eine Groß-/Kleinschreibung berücksichtigende reguläre Ausdrucksübereinstimmung für den Speicherort verwenden:

location ~ ^/(?<sitepath>[^/]*)/ {
  try_files $uri $uri/ /$sitepath/r.php;
}

IIS

Hinweis: Die folgenden Anweisungen sind nicht getestet. Wenn Sie über Kenntnisse zu IIS verfügen und genauere oder aktuellere Anweisungen bereitstellen können, tun Sie dies bitte.

Mit dem Modul URL Rewriter für IIS können Sie eine Rewrite-Regel in Ihrer Datei web.config erstellen:

<rewrite>
    <rules>
        <rule name="Moodle" stopProcessing="true">
            <match url="^(.*)$" ignoreCase="false" />
            <conditions logicalGrouping="MatchAll">
                <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
            </conditions>
            <action type="Rewrite" url="r.php" appendQueryString="true" />
        </rule>
    </rules>
</rewrite>

Moodle konfigurieren

Nachdem Sie den Router erfolgreich konfiguriert haben, sollten Sie Moodle darüber informieren, dass es korrekt konfiguriert ist, indem Sie Folgendes in Ihrer config.php einstellen:

$CFG->routerconfigured = true;