質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Q&A

2回答

1450閲覧

Laravelで管理画面付きホームページを作る際のディレクトリ構成

riku02

総合スコア0

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

0グッド

0クリップ

投稿2022/07/16 03:33

前提

Laravelで管理画面付きのホームページを作ろうと思っています。

実現したいこと

sample.com
sample.com/news
などでフロント側のページへサクセス

sample.com/admin
sample.com/admin/login
sample.com/admin/info/index
などで管理画面にアクセス

できるようにしたいです。

発生している問題・エラーメッセージ

公式にもある通り、ドキュメントルートの配下にLaravelをインストールするのは好ましくないと思うので、ドキュメントルートからシンボリックリンクを張って、同階層にインストールしたLaravelが動くようにしました。

laravel ├ app │ └ Http │ └ Controllers │ └ InfoController.php ├ resources │ └ views │ └ info │ └ index.blade.hphp ├ routes │ └ web.php ├ public │ └ index.php htdocs └ admin シンボリックリンク /var/www/larave/public

上記の構成で/adminで管理画面にはアクセスできるのですが、フロント側はどうすればいいの?のことで手をこまねいています。

同じように//var/www/larave/publicというシンボリックリンクを張れば、あとはルーティングで分岐させれていけるか?と思ったのですが、そのようにシンボリックリンクを張る方法が分かりません。

そもそもこの方針で合ってるのかも含め、もっと良い方法(セオリーのようなもの)があれば教えていただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自分が開発する時に使っている構造はこんな感じですね。

laravel ├ app │ └ Http │ └ Controllers │ ├ Web │ │ ├ WelcomeController │ │ └ ExampleController │ └ Admin │ ├ WelcomeController │ └ ExampleController ├ resources │ └ views │ ├ web │ │ ├ index.blade.php │ │ └ examples │ │ ├ index.blade.php │ │ └ show.blade.php │ └ admin │ ├ index.blade.php │ └ examples │ ├ index.blade.php │ ├ show.blade.php │ ├ create.blade.php │ └ update.blade.php ├ routes │ └ web.php

php

1/** routes/web.php */ 2 3// web 4Route:resource('/', \App\Http\Controllers\Web\WelcomeController::class); 5Route:resource('examples/', \App\Http\Controllers\Web\ExampleController::class)->only(['index', 'show']); 6 7// admin 8Route::prefix('admin')->group(function(){ 9 Route:resource('/', \App\Http\Controllers\Web\WelcomeController::class); 10 Route:resource('examples', \App\Http\Controllers\Admin\ExampleController::class); 11});

routes/web.php から admin 部分を分離させたい場合は、routes/admin.php を作って、RouteServiceProvider::boot() に admin の定義を追加する。

php

1/** Controllers/Web/ExampleController.php */ 2 3class ExampleController extends Controller 4{ 5 public function index() 6 { 7 $examples = Example::paginate(); 8 return view('web.examples.index', compact('examples')); 9 } 10}

php

1/** Controllers/Admin/ExampleController.php */ 2 3class ExampleController extends Controller 4{ 5 public function index() 6 { 7 $examples = Example::paginate(); 8 return view('admin.examples.index', compact('examples')); 9 } 10}

php

1/** Controllers/Web/WelcomeController.php */ 2 3class WelcomeController extends Controller 4{ 5 public function __invoke() 6 { 7 return view('web.index'); 8 } 9}

php

1/** Controllers/Admin/WelcomeController.php */ 2 3class ExampleController extends Controller 4{ 5 public function __invoke() 6 { 7 return view('admnin.index'); 8 } 9}

投稿2022/07/16 04:42

編集2022/07/16 07:54
phper.k

総合スコア3923

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

riku02

2022/07/16 05:02

ありがとうございます。ドメインをexample.comとしますと、この場合URLは 表側:example.com/examples 管理側:example.com/admin になるかと思いますが、表側のトップ(example.com)へのアクセスはどのように実現できるでしょうか。 また、Laravelがインストールされている場所が分からないのですが、 エントリーポイント(public/index.php)の実行はどのような方法になるのでしょうか。 質問ばかりですみません…
phper.k

2022/07/16 08:35 編集

とりあえず追記したけど、 > また、Laravelがインストールされている場所が分からないのですが、 これ、質問の意味がわからんです。 マニュアルに書かれているように、サーバーにインストールするだけだし。何がわからないのかわからないです。
riku02

2022/07/16 10:11

すみません。Laravelがどのディレクトリ階層でインストールされているか、という意味でお尋ねしました。
phper.k

2022/07/16 11:34

別にどこでもいいじゃない? OSによっても変わることだし、HTTPサーバーのベンダーによってもデフォルトのドキュメントルートは変わるんだし。
riku02

2022/07/16 11:58

環境について何も記載しておらず申し訳ないのですが、 Apacheの場合、/var/www/htdocs等のドキュメントルートにLaravelをインストールした場合、 最後のご回答いただいた構造で実現できるかと思います。 質問の趣旨は、Laravelをルート以下ではなく、ルートの外側(htdocsと同階層など)に インストールした場合の方法についてです。 仮にhtdocsと同階層にご回答いただいたlaravelディレクトリを置いた場合、 /laravel/public/index.phpが実行されればルーティングによってwebとadminに 切り分けられると思いますが、ドキュメントルートを/var/www/htdocsのままに した状態で、どのように/laravel/public/index.phpを実行させればいいのでしょうか?
phper.k

2022/07/16 13:08 編集

> ドキュメントルートを/var/www/htdocsのままにした状態で、どのように/laravel/public/index.phpを実行させればいいのでしょうか? 普通にドキュメントに書かれている通りにすればいいことだし、そうしなきゃいけない事情ってなんかあるんですかね?
phper.k

2022/07/16 13:26

質問のようにシンボリックリンクでやろうとするなら、元々存在している htdocs ディレクトリを削除してから、 sudo ln -s -F ~/laravel/public /var/www/htdocs というようにリンクすればいいんでしょうけど。 自分は試したこともないし、動作保証はできかねます。
phper.k

2022/07/18 06:53

この質問いつまで放置するんでしょうか?
guest

0

管理システムを別ドメインにするという手もありますがいかがでしょう。参照DBは同じにする。
フレームワークをそれぞれに入れることになるかもしれませんが、無関係な閲覧者のアクセスは避けられやすくなります。

投稿2022/07/16 03:55

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

riku02

2022/07/16 04:48

ありがとうございます。おっしゃる方法も考えられるかと思いますが、 今回は同一ドメインであることを前提にしています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問