phpBB3フォーラムをDiscourseへ移行する

/admin/site_settings/category/all_resultspermalink_redirects を検索するということですか? その設定は私には存在しません。

しかし、/^forum\\/(view.*)/\\1 を使用すると、permalink_normalizations がある程度機能します。

  • すべての phpBB リンクは view で始まります。例えば viewtopic.phpviewforum.php です。実際、私たちのケースでは移行された URL はこれら 2 つだけのようですので、正規表現を強化するか、完全なパスマッチングのために 2 つに分割することができます。
  • その正規表現(sed 構文)は /forum/view で始まるすべての URL を取得し、/forum/ の部分を削除します。

これで、ウェブサーバー(または私たちの場合は Cloudflare)で /phpbb/ (私たちの古いフォーラムパス)を /forum/ にリダイレクトするだけで、残りは Discourse が処理します。3 年前にこれを見つけていれば、すべてのバックリンクを壊す代わりに済んだのに。:smiling_face_with_tear:

しかし、この permalink_redirects がどこにあるべきか教えていただけますか? プラグインが必要なのか、あるいは phpBB インポートプラグインの一部だったのかなど。

追記:うまく機能しました。

root@micha:~# curl -IL https://dietpi.com/phpbb/viewtopic.php?p=46083
HTTP/2 301
location: /forum/viewtopic.php?p=46083

HTTP/2 301
location: https://dietpi.com/forum/t/is-there-a-simple-launch-page-for-dietpi/11237/1
x-discourse-route: permalinks/show

HTTP/2 200
x-discourse-route: topics/show

最初の /phpbb => /forum のリダイレクトは、私たちのオリジンへの些細な負荷を避けるために、Cloudflare でリダイレクトルールを介して行われます。実際のトピックへの 2 番目のリダイレクトは、phpBB インポートプラグインによって追加されたパーマリンクに一致させるために、パーマリンク正規化を介して先頭の forum/ を削除して Discourse で行われます。このパーマリンクには、古いフォーラムサブディレクトリパスも新しいフォーラムサブディレクトリパスも含まれていません。