it-swarm-tr.com

SEF dışı URL kullanarak bileşenlere erişimi engellemenin bir yolu var mı?

Müşterim, SEF etkin olmasa bile SEF dışı URL kullanarak Joomla'daki bileşenlere erişebileceğimizi fark eder.

URL'de hiçbir Itemid olmadığından sayfa dağınık olduğundan hoşlanmıyor. Örneğin, http://www.joomla.org/index.php?option=com_content insanların sitesinde görmesini istemediği şeydir.

Global Yapılandırma'da SEF etkinleştirildiğinde SEF dışı URL'ler kullanarak siteye erişimi engellememizin bir yolu var mı?

7
Hung Tran

Bu kodla bir sistem eklentisi oluşturabilirsiniz:

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

Yani, soru işaretinden sonra bir şey varsa ?, 404 hatası veriyor.

Bunun yerine, bir 404 hatası atmak isterseniz kullanıcıyı ana sayfaya yönlendirebilirsiniz.

Düzenleme:

Bazı uzantıların soru işareti kullanmasına izin vermek istiyorsanız şunları yapabilirsiniz:

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

Geçerli rotada ilişkilendirilmiş bir menü yoksa, 404 hatası verir.

6
csbenjamin

Ancak sıradan ziyaretçiler SEF olmayan URL'leri nasıl tahmin edecek ve bunları SEF yerine bir URL kullanacak, böylece dağınık şablon görünümünü elde edebilecekler mi?

Her neyse, bundan kaçınmanın bir yolu, bir SEF olmayanı karşılık gelen SEF url'sine çevirecek olan bir üçüncü taraf SEF uzantısını kullanmaktır. Ziyaretçiler sef olmayanları tarayıcının adres çubuğunda görmezler.

Ancak dağınık şablondaki sorun ortadan kalkmayacak. Sanırım bu sorun, sayfaları görüntülerken farklı bir menü öğesinin veya hiçbir menü öğesinin dikkate alınmamasından kaynaklanmaktadır, bu nedenle bu sayfalara yönelik tüm css sonekleri, modülleri veya diğer özel şeyler doğru şekilde işlenecektir.

Bu sorunu ortadan kaldırmak için, bu sayfaları istediğiniz menü öğesine atamanız gerekir.

2
FFrewin

Benim tavsiyem sh404sef kullanmak ve her zaman URL'yi bir öğe olmadan sabitlemek. Yapılandırmasının bir parçası olarak "Öğe Kimliği Yönetimi" konusuna bakın:

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

1
Chad Windnagle