Я уже пытался найти эту проблему, но все это отличается от моего, поэтому я размещаю это здесь. Я пытаюсь создать веб-сервер, используя nginx
для размещения нескольких проектов larvel в подпапках. Это мой сервер labs. Поэтому я хотел бы, чтобы мои проекты были такими:
- domain.com/project1
- domain.com/project2
- domain.com/project3
Я копирую следующий блок nginx location
для каждого проекта (я не знаю, что здесь происходит, я просто скопировал из Интернета, и он работал):
location ^~ /project1/ {
alias /home/web/project1/public;
try_files $uri $uri/ @project1;
location ~ \.php {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME "/home/web/project1/public/index.php";
}
}
location @project1 {
rewrite /avm/(.*)$ /project1/index.php?/$1 last;
}
И RESTful маршруты в моем приложении laravel:
/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It a breeze. Simply tell Laravel the URIs it should respond to
| and give it the controller to call when that URI is requested.
|
*/
Route::get('/', ['middleware' => 'auth','uses' => '[email protected]'])->name('home');
// Authentication
Route::get('auth/login', 'Auth\[email protected]');
Route::post('auth/login', 'Auth\[email protected]');
Route::get('auth/logout', 'Auth\[email protected]');
// Administração
Route::group(['prefix' => 'administracao', 'middleware' => 'auth'], function() {
Route::resource('filiais', 'FiliaisController');
Route::resource('precos', 'PrecosController');
Route::resource('funcionarios', 'FuncionariosController');
Route::resource('cargos', 'CargosController');
Route::resource('vendedores', 'VendedoresController');
});
// Comercial
Route::group(['prefix' => 'comercial', 'middleware' => 'auth'], function() {
Route::resource('clientes', 'ClientesController');
Route::resource('fichas', 'FichasController');
});
// Operacional
Route::group(['prefix' => 'operacional', 'middleware' => 'auth'], function() {
Route::resource('agenda', 'AgendaController');
Route::resource('os', 'OsController');
Route::resource('ambientes', 'AmbientesController');
Route::resource('processos', 'ProcessosController');
Route::get('relatorios', '[email protected]');
Route::group(['prefix' => 'processo', 'middleware' => 'auth'], function() {
Route::get('create', '[email protected]');
Route::get('index', '[email protected]');
Route::post('{os}/parse', '[email protected]');
Route::get('{os}', '[email protected]');
Route::match(['get', 'post'], '{os}/detalhe', '[email protected]');
Route::get('{os}/duplicidades', '[email protected]');
Route::get('{os}/restantes', '[email protected]');
Route::match(['get', 'post'], '{os}/auditoria', '[email protected]');
Route::match(['get', 'post'], '{os}/operadores', '[email protected]');
Route::match(['get', 'post'], '{os}/divergencia', '[email protected]');
Route::match(['get', 'post'], '{os}/finalizar', '[email protected]');
Route::get('{os}/excluir/{setor}', '[email protected]');
});
});
Хотя кажется, что он работает (страница появляется и т.д.), когда она переходит в логику бизнес-процессов (сохранение в базу данных и т.д.), похоже, у нее много ошибок. Например, когда я пытаюсь создать нового сотрудника в url http://domain.com/project1/administracao/funcionarios
, он дает мне ошибку: SQLSTATE[42S22]: Column not found: 1054 Unknown column '/administracao/funcionarios' in
(он вроде бы предваряет некоторые маршруты URL)
И когда я настраиваю субдомен, например project1.domain.com
, все работает отлично. Но я не хочу создавать субдомен для каждого проекта, я хочу, чтобы он работал в url вложенных папок. Возможно ли это?