it-swarm.it

Esiste un modo per bloccare l'accesso ai componenti utilizzando un URL non SEF?

Il mio cliente si rende conto che possiamo accedere ai componenti in Joomla utilizzando URL non SEF anche quando SEF è abilitato.

Non gli piace, perché senza Itemid nell'URL, la pagina è disordinata. Ad esempio, http://www.joomla.org/index.php?option=com_content è ciò che non vuole che le persone vedano sul suo sito.

Esiste un modo per bloccare l'accesso al sito utilizzando URL non SEF quando SEF è abilitato in Configurazione globale?

7
Hung Tran

Puoi creare un plugin di sistema con questo codice:

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

Quindi, se abbiamo qualcosa dopo il punto interrogativo ?, genera un errore 404.

Invece genera un errore 404, puoi reindirizzare l'utente alla home page se lo desideri.

Edit:

Se si desidera consentire che alcune estensioni utilizzino il punto interrogativo, è possibile effettuare:

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

Se il percorso corrente non ha un menu associato, genera un errore 404.

6
csbenjamin

Ma in che modo i visitatori occasionali indovineranno mai gli URL non SEF e li utilizzeranno al posto di quello SEF, in modo da poter ottenere la visualizzazione disordinata del modello?

In ogni caso, un modo per evitarlo è utilizzare un'estensione SEF di terze parti, che tradurrà sempre un non SEF nell'URL SEF corrispondente. I visitatori non vedranno il non-sef nella barra degli indirizzi del browser.

Ma il problema con il modello disordinato non scomparirà. Immagino che questo problema sia dovuto al fatto che durante la visualizzazione delle pagine viene considerata una voce di menu diversa o nessuna voce di menu, quindi eventuali suffissi CSS, moduli o altre cose speciali destinati a queste pagine verranno gestiti correttamente.

Per eliminare questo problema, è necessario assegnare queste pagine alla voce di menu desiderata.

2
FFrewin

La mia raccomandazione sarebbe di usare sh404sef e di aggiungere sempre un itemid agli URL senza uno. Vedi "Gestione ID oggetto" come parte della sua configurazione:

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

1
Chad Windnagle