3

Drupal 7 では、(存在しない) URL の一部が 404 またはエラー ページにリダイレクトされません。代わりに、上位の親フォルダーが表示されたままになります。たとえば、次のようにします。

  • www.mywebsite.com/items/aaaaaaaaaaaaa
  • www.mywebsite.com/items/bbbbbbbbbbbbbbbbbb

/items/上記のように私の下にあるすべての間違った URLは、その親のページを表示しています:
www.mywebsite.com/items404 にリダイレクトされる代わりに、実際にページがない場合
、その親を表示したくありません。

しかし、奇妙なことに、すべてのパターンで発生しているわけではありません。つまり、別の別の親が好きです:

  • www.mywebsite.com/users/aaaaaaaaaaaaa
  • www.mywebsite.com/users/bbbbbbbbbbbbbbbbbb

この/users/親パスの下に間違った URL を入力すると、404 ページに正しくリダイレ​​クトされます。

それは何ですか?

4

4 に答える 4

3

私があなたの質問を正しく理解していれば、それはまったく問題ではありません。

これは、/寄稿/コアモジュールがDrupalメニューシステムをフックする方法のためです。

メニュー項目(具体的にはメニュールーター項目。「admin / config / development / performance」などのパスを考えてください)に「%」記号がない場合、メニューコールバック関数が実行されます。たとえば、モジュールが「items」パスを登録する場合、example.com / itemsパスは404ではなく、メニュー項目の適切なメニューコールバック関数が起動されます。そのコールバック関数は、指定されている場合、さらにURL部分(example.com/items/123)を利用できます。

「ノード」は良い例です。(技術的には、これらは異なるメニュールーター項目ですが)。example.com/nodeを開いても404は起動されません。

モジュールが'items/%'を登録すると、example.com / itemsは404を起動します。つまり、メニューコールバック関数を実行するには、2番目のURL部分が必要です。

直面している問題がカスタムモジュールに関連している場合は、ルーターアイテムの正しいバージョンを登録していることを確認してください。2番目のURL部分が必要な場合は、items /%を登録します。drupal_not_found()を呼び出すことで404を実行できます。

于 2012-09-04T16:56:24.533 に答える
1

これを見て、本当に役に立ちました http://peterpetrik.com/blog/2009/11/non-existent-urls-views-2

于 2012-10-01T07:45:57.917 に答える
1

そのパス ( ) にビューを使用しています/itemsか?

ビューの問題は次のとおりです。コンテンツの重複を防止します (ビューは代わりに 200 を返すため)。400404 )

これを防ぐためにコンテキスト フィルタを作成できます。

merlinofchaos さんが書きました:

この動作が望ましくない場合は、グローバル: NULL 引数をビューに追加し、設定を使用して引数が空であることを検証します。

Drupal 6 の場合、Views 404モジュールが役立つ場合があります。

于 2012-09-06T14:07:17.017 に答える
0

作成した特定の 404 ページにリダイレクトするように drupal インストールを構成できます。

www.yoursite.com/admin/config/system/site-information404 ページにアクセス して入力します。

于 2012-09-05T10:12:35.177 に答える