Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Moodleサイトの移行方法

More than 1 year has passed since last update.

Moodleサイトの移行と問題

何らかの理由によりMoodleのサイトURLが変わる場合がある。例えばホスト名が変わった時(http://currentmoodle.yourdomain/ から http://archivemoodle.yourdomain/ )や、後で年度毎に異なるURLを使いたくなった時( http://moodle.yourdomain/ から http://moodle.yourdomain/2017/ )、HTTPSを使うように変更した時( http://moodle.yourdomain/ から https://moodle.yourdomain/ )などである。
Moodleではコンテンツ中の文字列でサイト内URLを絶対パスで保存している。そのため、これらの変更があった場合にconfig.phpの $CFG->wwwroot を変更しただけでは既存のMoodleサイト中でリンク切れとなってしまう。
この問題を解決するためにDBに保存されているURLを変換する必要がある。

対策方法

DB内のテキストをリプレースする

サイト管理者としてログインした状態で http://moodle.yourdomain/admin/tool/replace/ にアクセスすると「データベース全体のテキスト検索および置換」というページが表示される。ここで古いURLと新しいURLを指定することでデータベース内の文字列置換を行うことができる。ミスしたときのダメージが大きいので慎重に行う必要がある。

image.png

Moodle 3.4からはHTTPからHTTPSへの移行の場合に http://moodle.yourdomain/admin/tool/httpsreplace/ の「外部コンテンツURLをHTTPSにアップグレードする」というツールを利用することもできる。

image.png

Moodleのフィルタを使う

MoodleのフィルタとしてURLを置換する。単純なフィルタだがたぶん自作する必要がある。若干のシステム負荷が掛かるが、問題は起きにくい。

mod_substituteを使う

httpdを利用している場合はmod_substituteを使うことができる。nginxならnginx_substitutions_filter
AllowOverride FileInfo してあるディレクトリの中に .htaccess を置くか httpd の設定ファイル中に直接記述する。

AddOutputFilterByType SUBSTITUTE text/html
Substitute "s|archivemoodle.yourdomain|currentmoodle.yourdomain|n"
papillon
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away