2017-01-14 38 views
0

Ich habe einen laufenden Blog basierend auf WP. Derzeit entwickle ich eine neue Web-App mit Laravel, die auf der gleichen (Sub-) Domain laufen sollte. Die neue Web-App sollte die neue Startseite/Startseite/Document-Root www.xyz.xyz/ der Website sein, aber ich möchte nicht die aktuelle WP-URL-Struktur ändern - ich möchte WP nicht in einem Unterverzeichnis ausführen - also sollte alles so bleiben, wie es für WP und seine bestehenden URLs ist, daneben sollte die Startseite von Laravel und nicht von WordPress bedient werden.Wordpress & Laravel nginx

Natürlich könnte es vorkommen, dass ein Wordpress-Post und eine Laravel-Webseite denselben Slug verwenden, obwohl dies nicht der Fall sein sollte, in diesem Fall sollte die Laravel-Seite bedient werden.

Ich benutze Nginx als Webserver. Hat jemand so etwas schon einmal gemacht? Kann es auf Nginx-Ebene erreicht werden? Hat jemand einen Vorschlag zur Lösung dieses Problems?

Die Erkennung, ob Laravel die Seite im Exception-Handler bedienen kann, wenn WP auch keine Seite zu liefern hat, wird dafür verantwortlich sein, das 404 - Curling des WP-Blogs zu zeigen, solange Sie laufen nicht auf der gleichen Subdomain/Webserver.

Die Hauptfrage ist, wie die index.php und nginx konfiguriert werden müssen, um sowohl Laravel & WP auf der gleichen (Sub-) Domäne zu dienen und im selben Verzeichnis zu laufen.

/** * Rendern Sie eine Ausnahme in eine HTTP-Antwort. * * @param \ Illuminate \ Http \ Antrag $ request * @param \ Exception $ Ausnahme * @return \ Illuminate \ Http \ Antwort */ public function render ($ request, Exception $ Ausnahme) {

if ($this->isHttpException($exception)) { 

     $statusCode = $exception->getStatusCode(); 

     switch ($statusCode) { 
      case '404': 


       if(Cache::store('file')->has('magazin-startpage')) { 
        echo Cache::store('file')->get('magazin-startpage'); 
        return; 
       } 

       $queryParameter = str_replace($request->url(), "", 
        $request->fullUrl()); 
       $path = $request->getPathInfo(); 

       $ch = curl_init(); 
       curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
       curl_setopt ($ch, CURLOPT_PORT , 443); 
       curl_setopt($ch, CURLOPT_URL,"https://www.blog.xyz" 
        .$path.$queryParameter); 
       curl_setopt($ch, CURLOPT_POST, 1); 
       $blog = curl_exec ($ch); 
       curl_close ($ch); 
       Cache::store('file')->put('www.blog.xyz', $blog, 60); 
       echo $blog; 

       return; 

      break; 
     } 
    } 

    return parent::render($request, $exception); 
} 

Danke.

Antwort

0

Ich bin nicht sicher, ob es Skripts gibt, die das Ergebnis einer Abfrage überprüfen können, bevor sie die Seite zurückgeben. Daher kann ich mir zwei Optionen vorstellen.

  1. Wenn Sie die Wurzel der Butzen für Wordpress kennen, können Sie den gesamten Datenverkehr für jeden von ihnen (dh sub.example.com/category) zu Wordpress und Verkehr für andere „Ordner“ auf Laravel direkt web.config verwenden.
  2. Wenn Sie die Root für Slugs nicht kennen oder sie mischen möchten, müssen Sie eine neue index.php-Datei erstellen, die den Aufruf von WordPress oder Laravel behandelt. Diese Datei müsste zuerst mit Laravel verbunden werden und den Router verwenden, um festzustellen, ob die Seite existiert. Wenn dies der Fall ist, sendet es die Anforderung vollständig an Laravel, andernfalls sendet es die Anforderung an WordPress.

Für Hilfe bei Methode 2 zu sehen, How can I check if a URL exists via Laravel?

Sie müssen Laravel des public/index.php mit der entsprechenden Wordpress-Datei zusammenführen. Mit web.config und Verzeichniswechsel, sollten Sie in der Lage sein, die zwei Installationen in völlig separaten Verzeichnissen zu haben. Dann können Sie alles standardmäßig an Laravel senden und public/index.php bearbeiten, um Anfragen, die nicht in der Wordpress-Engine vorhanden sind, zu senden.

+0

danke für deine antwort, ich habe meinen initialen post bearbeitet, die 404-erkennung ist bereits erfolgt, ähnlich wie bei ihrem zweiten ansatz, aber im error-handler. Haben Sie Beispiele wie solch eine index.php + nginx config aussehen sollte? Danke. – jo182

+0

Ich habe kein Beispiel, aber ich denke, dass Sie in der Lage sein sollten, die Wordpress index.php Datei zu verwenden und einfach den Inhalt anstelle der curl Anfrage zu importieren, da Sie alle Dateien direkt auf Ihrem Webserver haben. Da curl einfacher ist, könnte WP tatsächlich auf einer anderen Subdomain laufen und nur curl verwenden, um es so aussehen zu lassen, als wäre es auf dieser Domain zur Außenwelt. – Loren

Verwandte Themen