這篇文章我們先不討論用子域名分伺服來建立多個 Laravel 的可能
我們先不討論效率是否會加強或改善,只討論方便管理
因為網頁而言,大多數是用routes/web.php
, 所以網網站變得架構很複雜很大的時候,你這個文件就可能會很長很長
最近在了解Laravel的API,被我注意到 app/Provider/RouteServiceProvider.php
對api
的那一段
$this->routes(function () {
Route::prefix('api')
->middleware('api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/web.php'));
});
上面的代碼給了我想到,不如試試這樣....
1.如果你的 domain.com/admin/
很多內容,就考慮建立獨立的route文件
Route::middleware('web')
->prefix('admin')
->namespace($this->namespace)
->group(base_path('routes/admin.php'));
這邊有個重點記得,即使你的admin 頁面有自己的middleware
,但這邊先填上web會較好,要驗證middleware
時請在下一步的routes/admin.php
中操作,詳情參考 [後記2]
2.然後下一步,去建立 routes/admin.php
比如寫入
Route::get('/home', function () {
return 'hello admin';
});
3.然後再去瀏覽...
然後再去瀏覽器瀏覽Laravel的 /admin/home/
就會是hello admin
後記
這樣一做,你的web.php 一定會乾淨了很多,同樣你可套用去 product
、topic
任何你認為需要組在一起的內容,前題是他們都用了相關的路徑(網址目錄, prefix()
)
感覺上以常理而言<應該>是多少有改善到讀取速度?但實際情況我則未能測試到
但這樣做的初衷也是為了方便管理 rotue內容
後記2 - middleware 的坑
我在測試時踩了一個坑當時在RouteServiceProvider.php
的文件中直接寫成了Route::middleware('admin')
我發現只要調用到這個routes/admin.php
時就直接的把的驗證失敗,我也是個新手小白,所以我懷疑這個位置的middleware
是更深入的東西?
最終我改回middleware('web')
,要做 middleware('admin')
或者一整個group 做middleware驗證等等操作,通通回到routes/admin.php
執行即可