更新:Drupalの問題#1796596 は、Redirect 1.0-rc2(2015年6月)にコミットされました。この問題の正しい解決策は、Redirectモジュールの最新の安定リリースにアップグレードしてから、データベースの更新を実行することです。循環リダイレクトは安全にクリーンアップされます。
この問題は、リダイレクトモジュールのバグが原因で発生しました。これをトリガーするには、ページのURL(pathautoを使用している場合は、おそらくそのタイトルのみ)を変更し、それを以前の状態に戻します。
たとえば、「company」というページがあり、タイトルを「Our company」に変更したとします(URLエイリアスがour-companyに変更されました)。その後、私は実際に最初の方法を優先したので、ノードをもう一度編集して、タイトルを「Company」に戻しました。その時点で、エラーメッセージ「このリクエストは無限ループを作成しようとしたようです。ここではそのようなことは許可されていません。私たちはプロのWebサイトです!」が会社のページに表示され始めます。
これを修正するには、最も簡単な方法に応じて、3つの方法があります。彼らは上から下に難易度/勇気の範囲です。
Drupal / PHPメソッド
件名には長いDrupalバグがあります。問題#1796596と、コメント#124に問題を修正する有効なパッチがあります。
うまくいけば、この修正はすぐにダウンロードのためにリダイレクトモジュールにコミットされます。しかし、それは今では1年以上が経過しており、その進展はありません。
SQLメソッド
この問題を解決する最も速い方法は、データベースへのSQLクエリを使用することです。 注意して、この方法は、実行していることがわかっている場合にのみ試してください。最初にサイトの開発用コピーで試してください。ロールバックが必要になった場合に備えて、バックアップがあることを確認し、すぐに変更をテストしてください。i18nを使用している場合は、特に注意して最初のクエリを十分にテストしてください...最初のクエリを実行して、何が削除されるかを示し、2番目のクエリを実行して実際に削除を実行します。
--Show records to be deleted:
SELECT r.rid, r.language, r.source, r.redirect
FROM redirect r INNER JOIN url_alias u ON r.source = u.alias
AND r.redirect = u.source AND r.language = u.language;
--Delete redirects shown in above query:
DELETE r FROM redirect r INNER JOIN url_alias u ON r.source = u.alias
AND r.redirect = u.source AND r.language = u.language;
パッチの適用方法やSQLクエリの実行方法がわからない場合は、手動で問題を修正する必要があります。心配しないでください。これは実際には非常に簡単です(ただし、他の方法と比較すると時間がかかります)。
手動による方法:
警告メッセージが表示された各ページについて:
- ページを編集する
- 編集フォームの下部までスクロールします
- ページのメインURLに注意してください。「URLパス設定」の下に表示されます。たとえば、「エイリアス:会社」は、ページのURLが「会社」であることを意味します。不明な場合は、[URLパス設定]をクリックしてそのセクションにアクセスし、URLエイリアスを確認できます。
- 次に[URLリダイレクト]をクリックします。現在のページへのリダイレクトが表示されます。手順3でメモしたURLエイリアスと同じリダイレクトが少なくとも1つあります。このリストの複数のリダイレクトがURLエイリアスと一致する可能性があります。
- URLエイリアスと同じリダイレクトをすべて削除します。これらは、ループの原因となっている問題データと表示されるエラーメッセージです。
- 「URLリダイレクト」の下に、URLパス設定の下の問題のあるページのURLエイリアスと完全に一致するリダイレクトがなくなると、エラーメッセージは表示されなくなります。