LoginSignup
0
4

More than 5 years have passed since last update.

静的HTMLページの中に複数のLaravelプロジェクトを組み込む方法

Posted at

前回書いたこれの続き。シンボリックリンクのやり方の応用みたいな

前回はお問い合わせページ「だけ」をLaravelで組み込むので、シンボリックリンク貼るだけでサクッと組み込めました。
が、今回はそれに加え管理画面の実装も必要となりました。当然これもLaravelでの開発です。

普通に考えれば以下のようにすればできますが・・・

example.com/ -> TOP(HTML) /var/www/html/index.html
example.com/contact/ -> お問い合わせページ(Laravel) /var/www/program/resources/views/contact/index.blade.php
example.com/contact/admin -> 管理画面(Laravel) /var/www/program/resources/views/admin/index.blade.php

お問い合わせの下に管理画面があるのは違うでしょ、って話。
名前を sys とかにして、example.com/sys/contactとか
example.com/sys/adminにすればいいんじゃないのって感じなんですが、却下されました。
管理画面のURLはexample.com/adminでなければいけないということです。
ので、これを実現します。

実装

シンボリックリンク

adminに対してもシンボリックリンクを貼ります。

ln -s /var/www/program/public /var/www/html/contact
ln -s /var/www/program/public /var/www/html/admin
ルーティング
routes/web.php

if(strpos(\Request::root(),'contact')){
    // Controllerは app/Http/Controllers/ContactsController.php を読みこみます。
    Route::get('/', 'ContactsController@index')->name('index'); // example.com/contact/

    Route::get('/confirm', function () { return redirect('/'); }); // 直リン防止
    Route::post('/confirm', 'ContactsController@confirm')->name('confirm'); // example.com/contact/confirm

    Route::get('/thanks', function () { return redirect('/'); }); // 直リン防止
    Route::post('/thanks', 'ContactsController@thanks')->name('thanks'); // example.com/contact/thanks
}

if(strpos(\Request::root(),'admin')){
    Route::group(['namespace' => 'Admin'], function() {
        // Controllerは app/Http/Controllers/Admin/AdminController.php を読みこみます。
        Auth::routes(); // example.com/admin/login とかそういうAuth関連一式
        Route::get('/', 'AdminController@index')->name('admin.index'); // example.com/admin/ 管理者ログイン後表示
        Route::get('/logout', 'Auth\LoginController@logout')->name('logout'); // example.com/admin/logout
    });
}

ルートURLに「contact」が含まれていたらcontactに関するページを表示、
ルートURLに「admin」が含まれていたらadminに関するページを表示するようにします。
こんなことをする理由は、\Request::root() が返す内容が http://example.com/contact などであり、
そのままでは if(\Request::root() == 'contact') とはできないからです。

0
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
4