すべての404ページをホームページにリダイレクトする方法

こんにちは。

すべての404エラーページを自動的にホームページまたは他のページにリダイレクトすることは可能ですか?

よろしくお願いいたします。

「いいね!」 3

Discourseはhtaccessを使用しないため、どこで解決策を探せばよいかわかりません。どなたか助けていただけると幸いです :slight_smile:

それを実現するためにプラグインを構築できると思いますか?

すぐにリダイレクトするのは混乱を招く可能性があるため、短いタイマーで対応するメッセージとともに404ルートをホームにリダイレクトするのはどうでしょうか?

それは機能するかもしれませんが、私はそれをどのように行うかわかりません:confused:

これのためのプラグインはありますか?

いや、そうは思わない。Marketplace に行けるよ

Htaccessは、Discourseの前にApache2があったとしても、また、そうであったとしても、いずれにせよ使用すべきではありません。

Dockerは人生をより複雑にします :wink: そして、私はそれをどう扱うべきかわかりません。しかし、必要であればDiscourseの前にNginx(または他のサーバー/リバースプロキシ)を置くことはできます。そして、そのようなリダイレクトは非常に簡単なタスクになるでしょう。以下のようなことができます。

しかし、そもそもなぜ404をフロントページにリダイレクトしたいのですか?ユーザーが何かを探していて、目的のページや404の代わりにフロントページが表示された場合、それは少し混乱します。そしてその後、ユーザーが何か間違ったことをしたか、サイトに問題があったのかもしれないと思って、もう一度試すでしょう。全く不必要であり、奇妙なリダイレクトの代わりにすべてのサイトがエラー404を表示するのには理由があります。

WordPressブログをDiscourseに移行しています。リンク構造が異なるため、移行後には大量の404ページが発生します。それぞれを手動でリダイレクト設定することはできないため、自動的に行うソリューションが必要です。

はい、しかしそれは解決策ではありません。それは悪い修正にすぎません。URL構造はまだ壊れていますが、それを隠しているだけです。そして、SEO価値をそのように転送することはできません :wink:

とにかく、そこにはサーバーがあります。それを使ってみてください。

WordPress と Discourse のサイトで異なるサブドメインを使用する場合、WordPress サーバー側でこれを実行できる可能性が高いです。

page_not_found.title(元は「おっと!そのページは存在しないか、非公開です。」)を変更することは可能です。詳細な状況を説明できるような page_not_found.content のようなものがないのは残念です。

「いいね!」 1

detailed 404 という管理設定がありますが、お役に立ちますでしょうか?

そのオプションは、私の記憶が正しければ、いかなる種類の転送も伴いません。

それらのリンクが指しているものは何であれ、Discourseに移行されるのでしょうか?たとえば、それらのリンクがトピックに変換するブログ記事を指している場合、パーマリンクを作成できます: Redirect old forum URLs to new Discourse URLs using permalinks

それらのURLを別のものに再マッピングすることもできます。URLに共通のフォーマットがあると仮定すると、REGEXとremapコマンドを使用してそれらを置き換えることができます。

remap [--global,--regex] FROM TO

コマンドの使用方法の例:

discourse remap --regex "[\\/?color(=[^\\\]]*)*]" "" # "color" bbcodeを削除
「いいね!」 1

ただし、Google とユーザーの両方を満足させたいのであれば、WordPress のサーバー上で実行する必要があります。

「いいね!」 1

5件の投稿が新しいトピックに分割されました:「トピック削除後にホームページにリダイレクトするにはどうすればよいですか?」[/t/how-do-i-redirect-to-homepage-after-topic-deletion/246677]

「カスタマイズ」機能を使用して、すべての壊れた 404 ページをホームページまたは別のページにリダイレクトできます。
カスタマイズ」>「テーマ」>「新しいテーマを作成」セクションに移動し、テーマに名前を付けます(例:404 リダイレクト)。基本テーマデフォルトに設定します。
次に、新しいテーマを作成し、「CSS/HTML を編集」をクリックします。HTML セクションで、リダイレクトを処理する JavaScript スニペットを作成します。
このコードを貼り付けます。

<script type="text/discourse-plugin">
  api.onPageChange((url, title) => {
    // すべての 404 ページをホームページにリダイレクトします
    if (url.includes('/404')) {
      window.location.href = '/';
    }
  });
</script>

必要に応じてページ名を調整してください。この古い URL を新しい Discourse URL にリダイレクトするをお読みください。