Wordpress & Laravel nginx



我有一个基于WP的博客。目前,我正在用Laravel开发一个新的网络应用程序,它应该在同一个(子)域上运行。新的网络应用程序应该是网站的新起始页/主页/文档根www.xyz.xyz/,但我不想更改当前的WP URL结构-我不想在子目录中运行WP-所以WP的一切都应该保持原样,它是现有的URL,除此之外,起始页应该由laravel而不是wordpress提供。

当然,一个wordpress帖子和一个laravel网页可能会使用同一个slug,尽管它不应该使用,在这种情况下,应该提供laravel页面。

我使用nginx作为web服务器。以前有人做过这样的事吗?它能在nginx级别上完成吗?有人对如何解决这个问题有什么建议吗?

如果Laravel可以提供页面,我将在异常处理程序中进行识别,如果WP也没有页面可供服务,它将负责显示404-卷曲WP博客的工作原理,只要它们不在同一子域/Web服务器上运行。

主要的问题是,如何配置index.php和nginx来同时为两者服务,Laravel&WP在同一(子)域上并且在同一目录中运行。

/***将异常呈现为HTTP响应。**@param\Illuminate\Http\Request$Request*@param\Exception$Exception*@return \Illuminate\Http\Response*/公共函数呈现($request,Exception$Exception){

if ($this->isHttpException($exception)) {
$statusCode = $exception->getStatusCode();
switch ($statusCode) {
case '404':

if(Cache::store('file')->has('magazin-startpage')) {
echo Cache::store('file')->get('magazin-startpage');
return;
}
$queryParameter = str_replace($request->url(), "",
$request->fullUrl());
$path = $request->getPathInfo();
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($ch, CURLOPT_PORT , 443);
curl_setopt($ch, CURLOPT_URL,"https://www.blog.xyz"
.$path.$queryParameter);
curl_setopt($ch, CURLOPT_POST, 1);
$blog = curl_exec ($ch);
curl_close ($ch);
Cache::store('file')->put('www.blog.xyz', $blog, 60);
echo $blog;
return;
break;
}
}
return parent::render($request, $exception);
}

谢谢。

我不确定是否有脚本可以在返回页面之前检查查询结果。因此,我可以考虑两种选择。

  1. 如果你知道wordpress的slugs的根,你可以使用web.config将每个slugs(即sub.example.com/category)的所有流量引导到wordpress,并将其他"文件夹"的流量引导到Laravel
  2. 如果你不知道slugs的根,或者想混合它们,你需要创建一个新的index.php文件,处理wordpress或Laravel的调用。该文件需要首先连接到Laravel,并使用路由器来确定页面是否存在。如果是,它会将请求完全发送给Laravel,如果不是,则会将请求发送给wordpress

有关方法2的帮助,请参阅,如何通过Laravel检查URL是否存在?

您需要将Laravel的public/index.php与相应的wordpress文件合并。使用web.config和目录切换,您应该能够在完全独立的目录中安装这两个程序。然后,您可以在默认情况下将所有内容发送到Laravel,并编辑public/index.php以将不存在的请求发送到wordpress引擎中。

最新更新