Yêu cầu thg 5 2, 2019 8:34 SA 1178 0 1
  • 1178 0 1
0

Sub-domain cho Laravel

Chia sẻ
  • 1178 0 1

Em xin chào mọi người ạ,

Hiện tại em đang làm một dự án sử dụng Framework Laravel 5.6, em đang gặp khó trong vấn đề sử dụng sub-domain cho nó ạ. Ý tưởng là thêm cái sub "m." vào example.com, vẫn dùng chung 1 core với example.com chỉ đơn giản là thay đổi giao diện hiển thị và thay đổi các controller sử dụng. Em đã làm theo hướng dẫn trên document của Laravel 5.6 và ra được code như này

Route::domain('m.example.com')->group(function () {
    Route::get('/', function () {
        return 'a';
    });
});

Về lý thuyết, đúng ra thì nó phải trả lại "a" hiển thị ở trên trình duyệt đúng không ạ?. Nhưng đây là cái mà em nhận được sau khi nhập domain ấy lên trên thanh địa chỉ

** trường hợp trên là khi em chưa add sub-domain vào trong DirectAdmin ** Khi em add sub-domain vào DirectAdmin, thì nó hiển thị thư mục "m" và chỉ thực thi các file nằm trong thư mục đó, chứ không có thông qua routes/web.php của laravel ạ.

Không biết em có làm gì sai, hay làm thiếu bước nào không ạ?.

Mong các anh chị cao nhân chỉ giáo, và hỗ trợ em fix lỗi này ạ!.

Em cảm ơn mọi người ạ!.

1 CÂU TRẢ LỜI


Đã trả lời thg 5 2, 2019 9:13 SA
+2
  1. Bạn trỏ toàn bộ sub domain (hoặc là chỉ m.example.com) về chung host của thằng example.com
  2. Bạn thêm ServerAlias cho cái example.com vào trong cấu hình apache của nó, để bất cứ request tới sub-domain sẽ đều vào web example.com (mình đoán bạn đang dùng Apache):
ServerAlias m.example.com

# Hoặc chấp nhận bất kỳ sub-domain nào:
ServerAlias *.example.com
  1. Khi đảm bảo 2 bước trên thì việc còn lại là laravel xử lý như bạn đang làm và web sẽ hiện ra như bạn đang kỳ vọng.
Chia sẻ
Avatar KienHoanh Le @le.kienhoanh
thg 5 2, 2019 9:34 SA

Cảm ơn anh đã dành thời gian ạ!.

Em đã làm theo hướng dẫn của anh, nhưng hiện giờ, khi vào thằng domain http://m.example.com thì nó vào được, nhưng source thì nó đang lấy từ thằng http://example.com bao gồm và view controller.

Hình như nó bỏ qua web.php luôn hay sao đấy ạ @@.

thg 5 3, 2019 3:39 SA

@le.kienhoanh

khi vào thằng domain http://m.example.com thì nó vào được, nhưng source thì nó đang lấy từ thằng http://example.com bao gồm và view controller.

Ơ?? Mình tưởng bạn muốn như này mà nhỉ:

thêm cái sub "m." vào example.com, vẫn dùng chung 1 core với example.com

Avatar KienHoanh Le @le.kienhoanh
thg 5 3, 2019 7:35 SA

@huukimit Cảm ơn anh đã dành thời gian,

Nhưng em có làm 1 cái route cho nó như ở trên bài ạ. Và làm theo cách trên thì em có thể vào được trang, nhưng nó không đọc route ạ ... 😦

thg 5 6, 2019 1:23 SA

@le.kienhoanh Bạn đang khai báo route đấy ở đâu? Có thể route / cho sub-domain kia bị trùng với cái route / của trang example.com nên nó đang dùng route / của example.com. Bạn thử đổi path của cái sub-domain rồi test lại xem có chạy vào route như mong muốn không. :-?

Avatar Lê Hoàng Vỹ Vỹ @lehoangvyvy97
thg 6 25, 2021 4:13 CH

@huukimit Ví dụ admin.example.com/articleexample.com/article 2 controller article ở 2 thư mục khác mình muốn subdomain có chung path có được không?

thg 6 28, 2021 3:20 SA

@lehoangvyvy97 Được bạn ạ.

Route::domain('admin.example.com')->group(function () {
    Route::get('/article', 'Article1Controller@index');
});

Route::domain('example.com')->group(function () {
    Route::get('/article', 'Article2Controller@index');
});
thg 6 28, 2021 3:21 SA

Mà bạn sửa được lỗi trong câu hỏi ban đầu chưa nhỉ?

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí