どのようにして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がインデックスページにリダイレクトされます。
これはエラーではなく、予想される動作です。 Joomla管理者のインターフェースで[コンポーネント]> [リダイレクト]に移動すると、404になるすべてのURLリクエストのリストが表示されます。Joomlaはこれらを自動的にこのコンポーネントに記録し、リクエストをホームページに再ルーティングします。
理由は2つあります。1つ目は、エラーページを軽減してユーザーエクスペリエンスの低下を防ぐこと、2つ目は、Webサイト管理者が目的のエンドポイントを追跡して手動で再ルーティングする手段を提供することです。詳細を説明するJoomlaドキュメントへのリンクを添付しました。
PHPファイルをテンプレートに追加し、error.php
という名前を付けて、テンプレートのルート(テンプレートのindex.php
の横)。
そのファイル内で、たとえばサイトのどこかに送信するなど、何をすべきかを指定できます(目的のURLで/SOMEWHEREINYOURSITE
を更新してください):
<?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
前の方法と同様に、目的のURLで/SOMEWHEREINYOURSITE
を更新します。
私は最近これをいくつかのサイトで見ましたが、サイトがオフラインモードで、フロントエンドにログインしているときに発生することを発見しました。
サイトがオンラインでURLを作成すると、ステータスコードを含む標準エラーページが表示されます。
サイトがオフラインでログインしている場合は、/ index.phpにリダイレクトされ、303他のステータスコードが表示されます。