Laravelではアプリケーションのディレクトリ内にappやpublicが一緒に入っています。
サブディレクトリでLaravelのアプリを動かしたいけど、public以下以外のapp等は公開ディレクトリに置きたくない!
という状況になり、数カ所パスの書き換えや処理の追加をしました。
パスのイメージ
以下のような構成になるイメージで説明を書いています。
┝public(ドキュメントルート)/XXX/index.php
┝ZZZ/app等
実際に書き換えた内容
public/index.php
以下のように目に付くパスを変更します。
require DIR.’/../storage/framework/maintenance.php’;
↓
require DIR.’/../../XXX/storage/framework/maintenance.php’;
bootstrap/app.php
// 中略$app->singleton( Illuminate\Contracts\Debug\ExceptionHandler::class, App\Exceptions\Handler::class);// ドキュメントルート変更(追加分)$app->bind('path.public', function () { return base_path().'/../public/XXX';});// 中略return $app;
public_path()メソッドで取得できる内容を変えるため、上記の追加分を足しています。
webpack.mix.js
npm run devを実行してpublic内にapp.cssとapp.jsが出力されます。
そのままだとwebpack.mix.jsがあるディレクトリに作成されてしまいます。
これをpublic/XXX/js/app/js、public/XXX/js/app/css以下に出力されるようにします。
mix.setPublicPath('../public/XXX/');mix.js('resources/js/app.js', 'js');mix.css('resources/css/app.css', 'css');
対応は以上です。
僕のほうでは小さなシステムしか作っていませんが、上記の対応で動作しています。
Good Luck!
コメント