2017-01-14 38 views
0

私はWPに基づいて実行中のブログを持っています。現在、私は同じ(サブ)ドメイン上で実行されるはずのLaravelを使って新しいWebアプリケーションを開発しています。新しいWebアプリケーションは、Webサイトの新しい開始ページ/ホームページ/ドキュメントルートwww.xyz.xyz/でなければなりませんが、私は現在のWP URL構造を変更したくありません - 私はサブディレクトリでWPを実行したくありません - だからWPのようにすべてが残っていて、開始ページはlaravelによって提供され、wordpressでは提供されないという既存のURLの横にある。Wordpress&Laravel nginx

もちろん、ワードプレスの投稿とlaravelのWebページで同じスラッグを使用していたとしても、その場合はLaravelページを提供する必要があります。

私はウェブサーバーとしてnginxを使用しています。誰もこれの前にこのような何かをしましたか?それはnginxレベルで達成することができますか?誰にもこの問題を解決する方法についての提案がありますか?

Laravelが例外ハンドラで行うことができる場合の認識私は例外ハンドラで行うでしょう、もしWPもそれを提供するページを持っていなければ、404を表示する責任があります - それらは同じサブドメイン/ウェブサーバー上で実行されていません。

主な質問は、index.phpとnginxを同じ(サブ)ドメインのLaravel & WPと同じディレクトリで実行するように設定する必要があることです。

/** * HTTP応答に例外をレンダリングします。 * * @param \を照らし\のHttp \要求$要求 * @param \例外$例外 * @return \を照らし\のHttp \レスポンス */ パブリック関数は($要求、例外$例外)をレンダリングする {

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

ありがとうございます。

答えて

0

ページを返す前にクエリの結果を確認できるスクリプトがあるかどうかはわかりません。したがって、私は2つの選択肢を考えることができます。

  1. あなたはWordPressのナメクジのルートを知っている場合、あなたはweb.configを使用してLaravelに他の「フォルダ」のためのワードプレスとトラフィックにそれらのそれぞれについて、すべてのトラフィック(すなわちsub.example.com/category)を指示することができます。
  2. スラッグのルートがわからない場合、またはそれらを混ぜたい場合は、wordpressまたはLaravelのいずれかを処理する新しいindex.phpファイルを作成する必要があります。このファイルは最初にLaravelに接続し、ルーターを使用してページが存在するかどうかを判断する必要があります。そうであれば、要求をLaravelに完全に送信し、そうでなければ、Wordpressに要求を送信します。 2参照方法のヘルプについて

How can I check if a URL exists via Laravel?

あなたは適切なワードプレスのファイルとLaravelのpublic/index.phpをマージする必要があると思います。 web.configとディレクトリの切り替えを使用すると、完全に別々のディレクトリに2つのインストールを行うことができます。その後、デフォルトですべてをLaravelに送信し、public/index.phpを編集して、存在しないリクエストをWordPressエンジンに送信することができます。

+0

私の最初の投稿を編集しました。あなたの2番目のアプローチに似ていますが、エラーハンドラに似ています。 このようなindex.php + nginxの設定がどのように表示されるのかの例はありますか? ありがとうございます。 – jo182

+0

私は例を持っていませんが、私はあなたがウェブサーバー上のすべてのファイルを持っているので、あなたはwordpress index.phpファイルを使用し、単にcurl要求の代わりにその内容をインポートできるはずだと思います。カールはよりシンプルなので、実際にはWPを別のサブドメインで実行し、カールを使ってこのドメイン上にあるように見えるようにすることができます。 – Loren

関連する問題