12/08/2018, 16:50

Tạo ứng dụng laravel như là sub path trên domain ex. http://domain.com/laravelapp/

Khi bạn tạo trang web mà trong trang web có nhiều thành phần thì bạn có thể làm theo những cách sau Tạo mỗi 1 ứng dụng trong domain của bạn như là 1 sub domain Ex: http://function1.domain.com , http://function2.domain.com .... => Nếu dùng theo cách này thì cần tạo A record từ domain trỏ về ...

Khi bạn tạo trang web mà trong trang web có nhiều thành phần thì bạn có thể làm theo những cách sau

  1. Tạo mỗi 1 ứng dụng trong domain của bạn như là 1 sub domain Ex: http://function1.domain.com , http://function2.domain.com .... => Nếu dùng theo cách này thì cần tạo A record từ domain trỏ về các các server khách nhau
  2. Tạo mỗi 1 ứng dụng trong domain của bạn như là 1 sub path Ex: http://domain.com/function1/, http://domain.com/function2/ .... => Nếu dùng theo cách này thì cần phải có https://en.wikipedia.org/wiki/Reverse_proxy, hoặc dùng cloud front của AWS để tiến hành trỏ mỗi sub path sẽ đến 1 server khác nhau

Sau đây mình sẽ giới thiệu cách tạo 1 ứng dụng laravel như là 1 sub path trên domain là http://domain.com/framgia/

RewriteEngine On
RewriteRule ^$ /framgia [L]

Tạo file .htaccess có nội dung như sau trong folder public/framgia

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>

Move index.php từ thư mục public vào public/framgia

Chú ý tạo file có nội dung như bên dưới hoặc chỉnh sửa đường dẫn đến bootstrap, vendor

<?php

/**
 * Laravel - A PHP Framework For Web Artisans
 *
 * @package  Laravel
 * @author   Taylor Otwell <taylor@laravel.com>
 */

define('LARAVEL_START', microtime(true));

/*
|--------------------------------------------------------------------------
| Register The Auto Loader
|--------------------------------------------------------------------------
|
| Composer provides a convenient, automatically generated class loader for
| our application. We just need to utilize it! We'll simply require it
| into the script here so that we don't have to worry about manual
| loading any of our classes later on. It feels great to relax.
|
*/

require __DIR__.'/../../vendor/autoload.php';

/*
|--------------------------------------------------------------------------
| Turn On The Lights
|--------------------------------------------------------------------------
|
| We need to illuminate PHP development, so let us turn on the lights.
| This bootstraps the framework and gets it ready for use, then it
| will load up this application so that we can run it and send
| the responses back to the browser and delight our users.
|
*/

$app = require_once __DIR__.'/../../bootstrap/app.php';

/*
|--------------------------------------------------------------------------
| Run The Application
|--------------------------------------------------------------------------
|
| Once we have the application, we can handle the incoming request
| through the kernel, and send the associated response back to
| the client's browser allowing them to enjoy the creative
| and wonderful application we have prepared for them.
|
*/

$kernel = $app->make(IlluminateContractsHttpKernel::class);

$response = $kernel->handle(
    $request = IlluminateHttpRequest::capture()
);

$response->send();

$kernel->terminate($request, $response);
let mix = require('laravel-mix');

/*
 |--------------------------------------------------------------------------
 | Mix Asset Management
 |--------------------------------------------------------------------------
 |
 | Mix provides a clean, fluent API for defining some Webpack build steps
 | for your Laravel application. By default, we are compiling the Sass
 | file for the application as well as bundling up all the JS files.
 |
 */

mix.js('resources/assets/js/app.js', 'public/framgia/js')
   .sass('resources/assets/sass/app.scss', 'public/framgia/css');

Trên là cách tạo sub path trên domain cho laravel 5.5 và chạy trên apache, đây là link source code mình đã up lên https://github.com/ngodinhngoc/laravel_tip/commit/9c26ea32d00a56e9cac040ca1cf8a64a762e8878

Thanks for reading!

0