Laravel 5.4前后台分离,通过不同的二级域名访问方法

吾爱主题 阅读:203 2021-09-01 15:40:00 评论:0

第一步:添加app\http\Controllers文件夹里面创建我们要存放前端和后端或者接口的文件夹

列如: Home(前端) Admin(后端) App(接口) 文件夹

第二步:修改app\http\providers\RouteServiceProvider.php

  1. <?php
  2.  
  3. namespace App\Providers;
  4.  
  5. use Illuminate\Support\Facades\Route;
  6. use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
  7.  
  8. class RouteServiceProvider extends ServiceProvider
  9. {
  10. /**
  11. * This namespace is applied to your controller routes.
  12. *
  13. * In addition, it is set as the URL generator's root namespace.
  14. *
  15. * @var string
  16. */
  17. protected $namespace = 'App\Http\Controllers';
  18. protected $homeNamespace = 'App\Http\Controllers\Home';//PC端
  19. protected $adminNamespace = 'App\Http\Controllers\Admin';//管理后台
  20.  
  21. /**
  22. * Define your route model bindings, pattern filters, etc.
  23. *
  24. * @return void
  25. */
  26. public function boot()
  27. {
  28. //
  29.  
  30. parent::boot();
  31. }
  32.  
  33. /**
  34. * Define the routes for the application.
  35. *
  36. * @return void
  37. */
  38. public function map()
  39. {
  40. //$this->mapApiRoutes();
  41.  
  42. //$this->mapWebRoutes();
  43. $sld_prefix = explode('.',$_SERVER['HTTP_HOST'])[0];
  44. if(config('route.admin_url') == $sld_prefix){
  45. $this->mapAdminRoutes();
  46. }elseif(config('route.home_url') == $sld_prefix){
  47. $this->mapHomeRoutes();
  48. }elseif(config('route.api_url') == $sld_prefix){
  49. $this->mapApiRoutes();
  50. }
  51. }
  52.  
  53. /**
  54. * Define the "web" routes for the application.
  55. *
  56. * These routes all receive session state, CSRF protection, etc.
  57. *
  58. * @return void
  59. */
  60. protected function mapWebRoutes()
  61. {
  62. Route::middleware('web')
  63. ->namespace($this->namespace)
  64. ->group(base_path('routes/web.php'));
  65. }
  66.  
  67. /**
  68. * Define the "api" routes for the application.
  69. *
  70. * These routes are typically stateless.
  71. *
  72. * @return void
  73. */
  74. protected function mapApiRoutes()
  75. {
  76. Route::prefix('api')
  77. ->middleware('api')
  78. ->namespace($this->namespace)
  79. ->group(base_path('routes/api.php'));
  80. }
  81.  
  82. /**
  83. * 管理后台
  84. */
  85. protected function mapAdminRoutes()
  86. {
  87. Route::middleware('web')
  88. ->namespace($this->adminNamespace)
  89. ->group(base_path('routes/admin.php'));
  90. }
  91.  
  92. /**
  93. * PC端
  94. */
  95. protected function mapHomeRoutes()
  96. {
  97. Route::middleware('web')
  98. ->namespace($this->homeNamespace)
  99. ->group(base_path('routes/home.php'));
  100. }
  101. }

第三步:在routes目录下创建admin.php 和home.php 路由

第四步:分别在app\Http\Controllers\Admin和app\Http\Controllers\Home

  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Http\Controllers\Controller;
  4.  
  5. class AdminController extends Controller
  6. {
  7. public function index()
  8. {
  9. echo "this is admin";
  10. }
  11. }
  1. <?php
  2. namespace App\Http\Controllers\Home;
  3. use App\Http\Controllers\Controller;
  4.  
  5. class HomeController extends Controller
  6. {
  7. public function index()
  8. {
  9. echo "this is home";
  10. }
  11. }

第五步:分别在admin.php 和home.php 新建路由

Route::get('/', 'AdminController@index');

Route::get('/','HomeController@index');

第六步:测试

第七步:运行报错

错误一:laravel Class ‘App\Http\Controllers\Controller' not found

错误二:Class App\Http\Controllers\IndexController does not exist

解决方法:

在PHPstorm Terminal控制台输入“composer dump-autoload”

因为laravel是用composer来加载类,不是命令创建的类要更新autoload。

如果没有使用PHPstorm编辑器的话,我们需要在本地安装composer,然后cmd以管理员运行,进入到项目的根目录执行“composer dump-autoload”

以上这篇Laravel 5.4前后台分离,通过不同的二级域名访问方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

原文链接:https://blog.csdn.net/u013257111/article/details/78768603

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容