非SEF URLを使用してコンポーネントへのアクセスをブロックする方法はありますか?


7

私のクライアントは、SEFが有効になっている場合でも、非SEF URLを使用してJoomlaのコンポーネントにアクセスできることを認識しています。

URLにItemidがないため、ページが乱雑になるため、彼はそれを好みません。たとえば、http://www.joomla.org/index.php?option = com_contentは、彼のサイトで人々に見せたくないものです。

グローバル構成でSEFが有効になっているときに、非SEF URLを使用してサイトへのアクセスをブロックする方法はありますか?

回答:


6

次のコードでシステムプラグインを作成できます。

public function onAfterInitialise(){
    $app = JFactory::getApplication();
    $config = JFactory::getConfig();
    $uri = JUri::getInstance();
    if($config->get("sef") && $app->isSite() && $uri->getQuery()){
        throw new Exception("Not Found", 404);
    }
}

したがって、疑問符の後に何かがある?と、404エラーがスローされます。

代わりに404エラーをスローし、必要に応じてユーザーをホームページにリダイレクトできます。

編集:

一部の拡張機能で疑問符を使用できるようにするには、次のようにします。

public function onAfterRoute(){
    $app = JFactory::getApplication();
    $config = JFactory::getConfig();
    $menu = $app->getMenu();
    if($config->get("sef") && $app->isSite() && !$menu->getActive()){
        throw new Exception("Not Found", 404);
    }
}

現在のルートに関連付けられたメニューがない場合、404エラーがスローされます。


それは素晴らしい解決策です。ただし、レイアウトの定義や独自の機能の実行に疑問符を使用する拡張機能がないことを確認する必要があります。たとえば、domain.com / submit
Hung Tran

1
@HungTran上記の私の編集を参照してください
csbenjamin '27 / 04/14

ありがとう、私は試しました、そしてそれは完全に働きました。以前にシステムプラグインの使用を考えていなかったのはなぜですか。
Hung Tran

2

しかし、どのようにカジュアルな訪問者が非SEF URLを推測し、SEF URLの代わりにこれらを使用するので、乱雑なテンプレートビューを取得できますか?

とにかく、これを回避する1つの方法は、サードパーティのSEF拡張機能を使用することです。これにより、常に非SEFが対応するSEF URLに変換されます。訪問者はブラウザのアドレスバーにnon-sefを表示しません。

しかし、乱雑なテンプレートの問題は解消されません。この問題は、ページを表示しているときに別のメニューアイテムが考慮されるか、メニューアイテムがまったく考慮されないため、CSSサフィックス、モジュール、またはこれらのページを対象としたその他の特別なものが正しく処理されるためと考えられます。

この問題を解消するには、これらのページを目的のメニュー項目に割り当てる必要があります。


2
問題は、あらゆるものを探すためにサイトをスキャンする悪質なボットがたくさんいるため、フロントエンドユーザーからサイトを非表示にしてもそれほど意味がないということです。脆弱なコンポーネントをスキャンしていたためにインストールしていないものについて、コンポーネントのURLでいっぱいのアクセスログを確認しました。
ブライアンピート2014

それは真実ですが、Hungは人間の訪問者と、表示の問題を引き起こす正しいメニュー項目なしで非sef URLを表示しないようにする方法について言及しました。
FFrewin

古いブックマークまたはGoogleの結果は、望ましくないURLにアクセスする方法です。また、混乱を避けることと使用を禁止することは、2つの異なるものです。明らかに、望ましくないURLの入力を阻止することはできません。Joomlaがそれらに応答するのを停止できます。
sovainfo 2014

さて、それにも同意しました。しかし、そのページが実際に存在し、目的のURLで美しく表示できるのに、なぜ404ページを提供するのでしょうか。また、最終的に、特にgoogleは、正規のsefが存在する場合、検索結果から非sefのURLを削除します。そして、Hungが尋ねたのは、non-sefが表示されたくないこと、およびitem-idがないか間違ったものが存在する場合に表示の問題を回避したくないということです。
FFrewin

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