如何让 Laravel 应用程序路由在 WordPress 网站的子文件夹中工作?

如何让 Laravel 应用程序路由在 WordPress 网站的子文件夹中工作?

我有一个现有的 WordPress 网站,我需要让 Laravel 应用在名为“api”的子文件夹中运行。这是一个 nginx 网站,因此 .htaccess 重定向将不起作用,如果需要重定向,最好的解决方案是 PHP 解决方案,因为我不确定是否能够直接在此特定服务器上访问 nginx 配置。我可以访问 Laravel 应用的 /public/ 文件夹中的 index.php 文件,但转到 /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,然后使用 try_files 尝试访问 Laravel(如果未成功)。当我在域的根目录中安装了 Cake PHP 并在 /blog 目录中安装了 Wordpress 时,我就是这样做的。这种方法可能存在缺点,但它在我的网站上效果很好 - 流量较少。

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;
  }
}

很高兴得到纠正或我的答案得到扩展。

相关内容