【发布时间】:2019-01-31 21:00:58
【问题描述】:
我已经尝试搜索这个问题,但它与我的完全不同,所以我在这里发布。我正在尝试使用nginx 创建一个网络服务器,以在子文件夹中托管多个 laravel 项目。这是我的 实验室 服务器。所以我希望我的项目是这样的:
- 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;
}
我的 laravel 应用程序中的 RESTful 路由如下:
/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It's 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' => 'HomeController@index'])->name('home');
// Authentication
Route::get('auth/login', 'Auth\AuthController@getLogin');
Route::post('auth/login', 'Auth\AuthController@authenticate');
Route::get('auth/logout', 'Auth\AuthController@getLogout');
// 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', 'RelatoriosController@index');
Route::group(['prefix' => 'processo', 'middleware' => 'auth'], function() {
Route::get('create', 'ProcessoController@create');
Route::get('index', 'ProcessoController@index');
Route::post('{os}/parse', 'ProcessoController@parse');
Route::get('{os}', 'ProcessoController@principal');
Route::match(['get', 'post'], '{os}/detalhe', 'ProcessoController@detalhe');
Route::get('{os}/duplicidades', 'ProcessoController@duplicidades');
Route::get('{os}/restantes', 'ProcessoController@restantes');
Route::match(['get', 'post'], '{os}/auditoria', 'ProcessoController@auditoria');
Route::match(['get', 'post'], '{os}/operadores', 'ProcessoController@operadores');
Route::match(['get', 'post'], '{os}/divergencia', 'ProcessoController@divergencia');
Route::match(['get', 'post'], '{os}/finalizar', 'ProcessoController@finalizar');
Route::get('{os}/excluir/{setor}', 'ProcessoController@destroy');
});
});
虽然它在进入业务逻辑(保存到数据库等)时似乎可以工作(页面出现等),但它似乎有很多错误。例如,当我尝试在 url http://domain.com/project1/administracao/funcionarios 中创建一个新员工时,它给了我错误:SQLSTATE[42S22]: Column not found: 1054 Unknown column '/administracao/funcionarios' in(它有点前置一些 url 路由)
当我设置像project1.domain.com 这样的子域时,一切正常。但我不想为每个项目创建一个子域,我希望它在子文件夹 url 中工作。有可能吗?
【问题讨论】:
-
在此处查看接受的答案:stackoverflow.com/questions/16683046/…
-
那是 Laravel 4.. 我已经试过了
-
你能显示发布到
project1/administracao/funcionarios的控制器代码吗?我想你正在使用Input::all()或类似的,我有兴趣查看发送到该函数的数据转储
标签: php .htaccess laravel nginx