を参照してください。SiteSettings.permalink_redirects
編集:おっと。パーマリンクの正規化
を参照してください。SiteSettings.permalink_redirects
編集:おっと。パーマリンクの正規化
/admin/site_settings/category/all_results で permalink_redirects を検索するということですか? その設定は私には存在しません。
しかし、/^forum\\/(view.*)/\\1 を使用すると、permalink_normalizations がある程度機能します。
view で始まります。例えば viewtopic.php や viewforum.php です。実際、私たちのケースでは移行された URL はこれら 2 つだけのようですので、正規表現を強化するか、完全なパスマッチングのために 2 つに分割することができます。sed 構文)は /forum/view で始まるすべての URL を取得し、/forum/ の部分を削除します。これで、ウェブサーバー(または私たちの場合は Cloudflare)で /phpbb/ (私たちの古いフォーラムパス)を /forum/ にリダイレクトするだけで、残りは Discourse が処理します。3 年前にこれを見つけていれば、すべてのバックリンクを壊す代わりに済んだのに。![]()
しかし、この 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 で行われます。このパーマリンクには、古いフォーラムサブディレクトリパスも新しいフォーラムサブディレクトリパスも含まれていません。
すみません。それが私が言いたかったことです。
いいえ。そのパスの正規化を行うだけで十分です。
これは機能しません。Discourseは/forumで動作し、/phpbbへのリクエストを認識しないためです。Discourseがサブパスにあり、インポート対象の以前のフォーラムソフトウェアのパスと一致しない場合、正規化を有効にするためにはリダイレクト(またはプロキシ前の書き換え)を行う以外に方法はありません。
そうです。それを見落としていました。/phpbbを/forumにリダイレクトする必要があり、おそらく正規化も引き続き調整する必要があります。
なるほど、それは確かにそれほど難しくありませんでした。/^forum\\/(view.*)/\\1 は、古い phpBB のパーマリンクに完全に適合します。インポートプラグインによって viewforum.php および viewtopic.php 以外のパーマリンク(たとえば、ユーザープロファイルリンクなど)が生成される可能性があるかどうかは、設定に依存するため不明です。
実際には、パーマリンクをスクロール/参照または並べ替えする方法があると便利で、どの URL スキームが含まれているかをよりよく把握できます。しかし、それは本題から外れており、検索パターンをループした後では、私たちのケースでは上記の 2 つだけが存在すると確信しています。
スクリプトはカテゴリ、トピック、投稿のパーマリンクのみを処理しているようです。
ユーザーのパーマリンクと、古いシステムにユーザーの import_id が含まれるユーザープロファイルを作成したい場合は、コンソールで少量のRubyコードで作成できます。
承知しました。トピックと投稿のURLは同じPHPスクリプトを使用しています。そのため、意図しない正規化を回避するために、正規表現を2つに分割できます。
/^forum\\/(viewforum.php\\?.*)/\\1/^forum\\/(viewtopic.php\\?.*)/\\1または /^forum\\/(view(forum|topic).php\\?.*)/\\1 ですが、パフォーマンス上のわずかな違いがあるかどうかはわかりません。
いずれにしても、プロファイルURLにバックリンクがある可能性は低いです。バグを報告したユーザーや、提案がプロジェクトに採用されたユーザーにリリースノートでクレジットを与えるために使用しています。しかし、それはまれなケースだと思います。また、Discourseに切り替えたときにリリースノートのリンクはすぐに更新されました。