it-swarm-id.com

Apakah ada cara untuk memblokir akses ke komponen dengan menggunakan URL non-SEF?

Klien saya menyadari bahwa kami dapat mengakses komponen di Joomla dengan menggunakan URL non-SEF bahkan ketika SEF diaktifkan.

Dia tidak menyukainya, karena tanpa Itemid di URL, halamannya berantakan. Sebagai contoh, http://www.joomla.org/index.php?option=com_content ia tidak ingin orang melihat di situsnya.

Apakah ada cara kita dapat memblokir akses ke situs dengan menggunakan URL non-SEF ketika SEF diaktifkan di Konfigurasi Global?

7
Hung Tran

Anda dapat membuat plugin sistem dengan kode ini:

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);
    }
}

Jadi, jika kita memiliki sesuatu setelah tanda tanya ?, ada kesalahan 404.

Alih-alih melemparkan kesalahan 404 Anda bisa mengarahkan pengguna ke halaman rumah jika Anda mau.

Edit:

Jika Anda ingin mengizinkan beberapa ekstensi menggunakan tanda tanya, Anda dapat melakukan:

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);
    }
}

Jika rute saat ini tidak memiliki menu terkait, itu melemparkan kesalahan 404.

6
csbenjamin

Tetapi bagaimana pengunjung biasa akan menebak URL non-SEF dan menggunakannya sebagai ganti dari SEF, sehingga mereka bisa mendapatkan tampilan templat yang berantakan?

Bagaimanapun, salah satu cara untuk menghindari ini adalah dengan menggunakan ekstensi SEF pihak ke-3, yang akan menerjemahkan non-SEF ke url SEF yang sesuai. Pengunjung tidak akan melihat non-sef di bilah alamat browser.

Tetapi masalah dengan templat yang berantakan tidak akan hilang. Saya kira masalah ini disebabkan oleh fakta bahwa item menu yang berbeda atau tidak ada item menu sama sekali dipertimbangkan, saat melihat halaman, sehingga sufiks css, modul atau hal-hal khusus lainnya yang dimaksudkan untuk halaman ini akan ditangani dengan benar.

Untuk menghilangkan masalah ini, Anda perlu menetapkan halaman-halaman ini ke item menu yang diinginkan.

2
FFrewin

Rekomendasi saya adalah menggunakan sh404sef dan selalu menyematkan itemid ke URL tanpa URL. Lihat "Manajemen Id Item" sebagai bagian dari konfigurasi itu:

http://anything-digital.com/sh404sef/docs/configuration.html

1
Chad Windnagle