0

Ich habe ein Prestashop 1.6 installiert auf einem VPS-Hosting und alles funktioniert gut damit, außer dass, wenn ich versuche, eine Seite zu erreichen, die nicht existiert, anstatt die 404-Seite der Vorlage zu bedienen, wird eine 301-Weiterleitung zurückgegeben und der Client wird zu index.php?controller=page-not-found umgeleitet, wo die 404-Vorlage angezeigt wird.Wie Prestashop die Seite-nicht-gefundene Redirect deaktivieren?

Dies funktioniert nicht für mich aus SEO Gründen. Wie deaktiviere ich diese Umleitung?

Dank

+0

in der Regel diese Veränderungen auftreten, in der Klasse/controllers/frontControllers.php oder Controller/Front/PageNotFoundController.php. Diese Dateien wurden geändert oder überschrieben? –

Antwort

1

Schaltet das Standardverhalten von Prestashop out ist zu umleiten. Es war kein Override. Wie auch immer - ich habe einen Weg gefunden, das zu erreichen, was ich sowieso machen wollte.

Nach einiger Zeit damit zu kämpfen - ich kam mit einer verzögerten Lösung, das wird für jetzt tun. Ich teile es hier, weil ich sicher gewesen wäre, es vor ein paar Tagen zu finden, aber sei gewarnt - es ist so weit zurückgeholt, dass es keine Rückkehr mehr gibt. Nicht empfohlen, wenn Sie etwas anderes finden können.

Was ich getan habe, war dies - ich fand die CategoryController.php Datei im Ordner Controller/Front /. Es sollte diese Zeile sein:

if (!$this->category->active) 

Darin Ich mache ein PHP file_get_contents zum 404.html Seite der Website anfordern, und sie dienen. Danach beende ich das PHP-Skript mit einem exit(); Befehl.

Auf diese Weise sendet der Server den 404.html Inhalt, ohne Umleitung. Hier ist der vollständige Code:

header('HTTP/1.1 404 Not Found'); 
header('Status: 404 Not Found'); 

echo file_get_contents('https://website.com/404/' 
false, 
stream_context_create(
array(
'http' => array(
'ignore_errors' => true 
) 
) 
) 
); 
exit(); 

Sie nicht vergessen, dass, wenn der Controller überschrieben wird es nicht richtig funktionieren kann.

0

Ich habe dies in overrided Werkzeuge getan Controller

public static function redirectLink ($ url) {

$init_url=$url; 

    if (!preg_match('@^https?://@i', $url)) { 
     if (strpos($url, __PS_BASE_URI__) !== false && strpos($url, __PS_BASE_URI__) == 0) { 
      $url = substr($url, strlen(__PS_BASE_URI__)); 
     } 
     if (strpos($url, 'index.php?controller=') !== false && strpos($url, 'index.php/') == 0) { 
      $url = substr($url, strlen('index.php?controller=')); 
     } 
     $explode = explode('?', $url); 
     $url = Context::getContext()->link->getPageLink($explode[0]); 
     if (isset($explode[1])) { 
      $url .= '?'.$explode[1]; 
     } 
    } 


if ((string)trim($init_url)==='404') { 
     header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found"); 

     header('Status: 404 Not Found'); 
     echo file_get_contents($url, false, 
      stream_context_create(
       array('http' => array('ignore_errors' => true, 
           ), 
      ) 
      ) 
     ); 

     exit(); 
    } else { 

      header("HTTP/1.1 301 Moved"); 
      header('Location: '.$url); 
      exit(); 

    } 

}

Verwandte Themen