it-swarm-es.tech

¿Hay alguna forma de bloquear el acceso a los componentes utilizando una URL que no sea SEF?

Mi cliente se da cuenta de que podemos acceder a los componentes en Joomla utilizando una URL que no sea SEF, incluso cuando SEF está habilitado.

No le gusta, porque sin Itemid en la URL, la página está desordenada. Por ejemplo, http://www.joomla.org/index.php?option=com_content es lo que no quiere que la gente vea en su sitio.

¿Hay alguna forma de bloquear el acceso al sitio mediante el uso de URL que no sean SEF cuando SEF está habilitado en la Configuración global?

7
Hung Tran

Puede crear un complemento del sistema con este código:

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

Entonces, si tenemos algo después del signo de interrogación ?, arroja un error 404.

En lugar de lanzar un error 404, puede redirigir al usuario a la página de inicio si lo desea.

Editar:

Si desea permitir que alguna extensión use el signo de interrogación, puede hacer lo siguiente:

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

Si la ruta actual no tiene un menú asociado, arroja un error 404.

6
csbenjamin

¿Pero cómo los visitantes ocasionales adivinarán las URL que no son SEF y las usarán en lugar de las SEF, para que puedan obtener la vista de plantilla desordenada?

De todos modos, una forma de evitar esto es usar una extensión SEF de un tercero, que siempre traducirá una URL que no sea SEF a la correspondiente. Los visitantes no verán el no sef en la barra de direcciones del navegador.

Pero el problema con la plantilla desordenada no desaparecerá. Supongo que este problema se debe al hecho de que se considera un elemento de menú diferente o ningún elemento de menú, mientras se visualizan las páginas, por lo que cualquier sufijo CSS, módulos u otras cosas especiales destinadas a estas páginas se manejarán correctamente.

Para eliminar este problema, debe asignar estas páginas al elemento de menú deseado.

2
FFrewin

Mi recomendación sería usar sh404sef y siempre anclar un itemid a las URL sin uno. Consulte "Gestión de Id. De elemento" como parte de su configuración:

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

1
Chad Windnagle