2017-03-08 23 views
3

現時点では、ステージングドメインを持つ単一のステージングサーバー(https://staging.example.comなど)があります。最近、新しいサーバー上でApacheからNGINXに切り替えることにしました.Laravelルーティングに問題があります。NGINXを使用した単一ドメイン上の複数のLaravelプロジェクト

私たちのすべてのlaravelアプリケーションはステージングサーバー上のサブディレクトリにあります。

私はLaravel docsで指定されたが、何かを使用してすなわちhttps://staging.example.com/app1/public/a/b

、任意の第2レベルのルートにアクセスする際に404を得るようnginxのconfのファイルを設定しようとしました以下の設定のように、私はアプリ内のすべてのルートにアクセスできます。

location @laravel { 
     rewrite /app1/public/(.*)$ /app1/public/index.php?$1; 
} 

location/{ 
     try_files $uri $uri/ @laravel; 
} 

しかし、我々は、このサーバー上でホストされている多くのアプリを持っていると我々はnginxのconfのファイルに私たちは、サーバーにアプリケーションを追加するたびに更新する必要がありますする必要はありません。

すべてのサブディレクトリに適用する書き換えを構築し、Laravelのルーティングシステムを機能させる方法はありますか?

注:この書き直しも試しましたが、rewrite (.*)/(.*)$ $1/index.php?$2は第2レベルのルートでは機能しません。

rewrite ^(/[^/]+/[^/]+)/(.*)$ $1/index.php?$2 last; 

を正規表現のthis useful resourceを参照してください:

答えて

1

あなたの最初のキャプチャは、あなたが使用して、それを制限する必要があり、おそらくあまりにも貪欲です。

+0

パブリック部分を書き直した最後の解決策は私にとっては効果的でしたが、他の2つのよりダイナミックな解決策は機能しませんでした。私はあなたが持っているソリューションを手直ししていきますので、パブリックパスを書き換えにハードコードする必要はありません。ありがとう! – Enijar

+0

最初のキャプチャで2つのパス要素を受け入れるという回答を更新しました。 –

関連する問題