Как настроить маршрутизацию приложений Laravel в подпапке сайта WordPress?
У меня есть существующий сайт WordPress, и мне нужно, чтобы приложение Laravel работало в подпапке "api". Это сайт nginx, поэтому перенаправления.htaccess не будут работать, и лучшим решением, если потребуется перенаправление, было бы решение PHP, так как я не уверен, что смогу получить доступ к конфигурации nginx непосредственно на этом конкретном сервере. Я могу получить доступ к файлу index.php в папке /public/ приложения Laravel, но переход к /api/route/ приводит меня к странице WordPress 404. Я попытался сделать перенаправления в конфиге nginx и PHP, но, похоже, ничего не работает. Есть ли что-то конкретное, что мне нужно сделать, чтобы поместить приложение Laravel в подпапку? Я унаследовал проект от другого человека, и в настоящее время он работает там, где он есть, но его нужно перенести на новый сервер.
Мои маршруты выглядят так:
Route::group(array('before' => 'api_auth'), function()
{
Route::get('/', 'Home\HomeController@index');
Route::resource('cusomter', 'Customer\CustomerController', array('only' => array('show', 'store')));
Route::resource('customer.conversion', 'Customer\CustomerController', array('only' => array('index')));
Route::resource('customer.search', 'Customer\CustomerController', array('only' => array('index')));
});
1 ответ
Один из способов заключается в том, чтобы Nginx сначала попытался получить доступ к Wordpress, а затем, если не получилось, попробовать Laravel, используя try_files. Вот как я это делаю, когда у меня есть Cake PHP в корне домена и Wordpress в каталоге /blog. Вероятно, у этого подхода есть недостатки, но на моих сайтах он работает нормально - малый объем.
location / {
try_files $uri $uri/ /api/route/index.php?$args;
}
Другим способом может быть определение местоположения для каждого приложения. Я уверен, что мои регулярные выражения неверны и не удивлюсь, если что-то не так, поскольку я не проверял это, но это должно быть концептуально нормально и вести вас в правильном направлении.
server {
root /var/www/html;
location ~ /api/route {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME /api/route/$fastcgi_script_name;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
Рад быть исправленным или мой ответ расширился.