Joomlaの404 HTTPコード


7

Joomlaに「実際の」404コードを返させるにはどうすればよいですか?これを実現する方法がわかりません!に変更htaccess.txt.htaccess、システム/リダイレクトプラグインを有効にし、Joomlaグローバルオプションで書き換えURLをオンにしました。

ただし、入力した偽のURLは、デフォルトのJoomlaエラーページにさえリダイレクトされず、単にホームページにリダイレクトされます。

これは、こちらのJoomlaデモサイトでも発生します:https : //demo.joomla.org/badurl_fake

さらにテスト:

Joomla Global Use Rewrite: OFF
Joomla htaccess.txt renamed: NO
Joomla redirect plugin enabled: NO

これにより、不正なURLは真の404エラーを返します

Joomla Global Use Rewrite: ON
Joomla htaccess.txt renamed: NO
Joomla redirect plugin enabled: NO

これにより、不正なURLは真の404エラーを返します

Joomla Global Use Rewrite: ON
Joomla htaccess.txt renamed: NO
Joomla redirect plugin enabled: YES

これにより、不正なURLは真の404エラーを返します

Joomla Global Use Rewrite: ON
Joomla htaccess.txt renamed: YES
Joomla redirect plugin enabled: YES

その結果、ユーザーがホームページに戻るURLが不正になります。

Joomla Global Use Rewrite: OFF
Joomla htaccess.txt renamed: YES
Joomla redirect plugin enabled: YES

その結果、ユーザーがホームページに戻るURLが不正になります。

Joomla Global Use Rewrite: OFF
Joomla htaccess.txt renamed: YES
Joomla redirect plugin enabled: NO

その結果、ユーザーがホームページに戻るURLが不正になります。

したがって、htaccessが原因であるように思われます。私のテストでは、.htacessが存在する場合は常に、404がインデックスページにリダイレクトされます。


.htaccessファイルに変更を加えましたか?それともJoomlaに同梱されているデフォルトのファイルですか?
johanpw 2014

いいえ。Ubuntuランプスタックで実行されるストレートデフォルト。
user101289 2014

@ user101289ホームページのメニュー項目にどのコンポーネントを使用していますか?com_contentまたは何か他に?
David Fritsch 2014年

回答:


2

これはエラーではなく、予想される動作です。Joomla管理者のインターフェイスで[コンポーネント]> [リダイレクト]に移動すると、404になるすべてのURLリクエストのリストが表示されます。Joomlaはこれらをこのコンポーネントに自動的に記録し、リクエストをホームページに再ルーティングします。

理由は2つあります。1つ目は、エラーページを軽減してユーザーエクスペリエンスの低下を防ぐことです。2つ目は、Webサイト管理者が目的のエンドポイントを追跡して手動で再ルーティングする手段を提供することです。詳細を説明するJoomlaドキュメントへのリンクを添付しました。

http://docs.joomla.org/Help33:Components_Redirect_Manager


@ブライアン-これをオーバーライドして「適切な」404を表示する方法はありませんか?
user101289 2014

はい、システムプラグインのリダイレクトを無効にします。
Brian Bolli 2014

リダイレクトプラグインを無効にしても、404なしでインデックスにリダイレクトされる
user101289

また、プラグインが有効になっているかどうかに関係なく、リダイレクトコンポーネントにエントリが表示されません。
user101289 2014

Joomlaのどのバージョンを使用していますか?
ブライアンボリ2014

2

テンプレートにPHPファイルを追加し、名前を付けてerror.php、テンプレートのルート(テンプレートのの横)に配置することで、404エラーをカスタマイズできます(例はカスタムページを表示するか、ホームページ以外の場所に送信しますindex.php)。

そのファイル内で、たとえばサイト内のどこかに送信する(/SOMEWHEREINYOURSITE目的のURLで更新する)など、何をすべきかを指定できます。

<?php
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

//example of a way to output the error code:
//echo $this->error->getCode();

if (($this->error->getCode()) == '404') {
    header('Location: /SOMEWHEREINYOURSITE');
}
?>

方法2:

.htaccessファイル(Apacheサーバーを使用していると思います)を使用していることを知っているので、404エラーをどう処理するかの定義を追加できます。

これを.htaccessファイルの先頭に配置します。

ErrorDocument 404 /SOMEWHEREINYOURSITE

前の方法と同様に/SOMEWHEREINYOURSITE、目的のURL で更新します。


1
デフォルトの/template/system/error.phpもテンプレートにコピーできません。テンプレートの多くはテンプレートに付属していません。
tristanbailey 2014年

systemdir 内の更新ファイルが上書きされた後、ユーザーはそれをコピーする必要があります
bumerang

1

最近、いくつかのサイトでこれを確認しましたが、サイトがオフラインモードであり、フロントエンドにログインしているときに発生することがわかりました。

サイトがオンラインでURLを作成すると、ステータスコードを含む標準エラーページが表示されます。

サイトがオフラインでログインしている場合、/ index.phpにリダイレクトされ、303他のステータスコードが表示されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.