2017-11-22 7 views
0

APIハンドラとしてLaravelアプリケーションを使用している従来のPHPアプリケーションを使用しています。従来のアプリとLaravelアプリは同じドメイン内にあり、同じサーバーにあります。 Laravelは、レガシーアプリケーション内のサブフォルダからシンボリックリンクされています。 WebサーバーはApacheです。mod_rewriteリダイレクトリクエストのLaravelアプリルートが正しくありません

私はLaravelにPDFを返すためのエンドポイントを設定しました。 PDFはレガシーアプリケーションによって生成され、名前が付けられ、ビジネスルール(顧客ID、場所など)に基づいてディレクトリに配置されます。すなわち/22/435123/435123-22.pdfここで、22はロケーション、435123は顧客IDです。

エンドポイントは、URLとして入力すると完全に機能します。 レガシーアプリケーションからアクセスするには、.htaccess書き換えルールを使用して従来のルート/ URLを書き換えます。書き換えルールテストサイトは、URLが正しく書き換えられたことを示します。上記の例を使用したLaravelルートは次のとおりです:/api/22/435123?filename=435123-22.pdf

私がレガシーアプリケーションからルートをヒットしたとき、LaravelはLaravelのindex.phpにファイル名でルーティングしますクエリが追加されました。ここではindex.php?ファイル名= 435123-22.pdf

は、書き換え($ 2は、APIには無関係である) RewriteRule ^files/([0-9]+)/([0-9]+)/([0-9]+)/(.*)$ /laravel/api/$1/$3?filename=$4

任意のアイデアですか?私が提供できるその他の情報は? Laravel側で

EDIT
、私はAPIを打つのリクエストをログに記録するミドルウェアのログを追加しました。 LaravelはリクエストURIを[Laravel Root] /index.php?として記録します。[レガシーアプリケーションから送信されたクエリ文字列]

答えて

0

ソリューションは完全なパスに書き換えられました。
すなわちhttps://%{HTTP_HOST}/laravel/api/$1/$3?filename=$4

関連する問題