【发布时间】:2017-05-29 22:57:35
【问题描述】:
我有一个基于 WP 的正在运行的博客。目前,我正在使用 Laravel 开发一个新的 Web 应用程序,它应该在同一个(子)域上运行。新的网络应用程序应该是网站的新起始页/主页/文档根 www.xyz.xyz/ 但我不想更改当前的 WP URL 结构 - 我不想在子目录中运行 WP -所以一切都应该保持原样,除了起始页应该由 laravel 而不是 wordpress 提供之外,它是现有的 URL。
当然,一个 wordpress 帖子和一个 laravel 网页可能会使用相同的 slug,尽管它不应该,在这种情况下应该提供 Laravel 页面。
我使用 nginx 作为网络服务器。有没有人做过这样的事情?它可以在nginx级别上完成吗?有人对如何解决这个问题有建议吗?
如果 Laravel 可以提供页面,我将在异常处理程序中进行识别,如果 WP 也没有页面可以提供,它将负责显示 404 - Curling WP 博客工作,只要他们不在同一个子域/网络服务器上运行。
主要的问题是,如何配置 index.php 和 nginx 以同时服务于 Laravel 和 WP 在同一个(子)域上并在同一个目录中运行。
/** * 将异常渲染到 HTTP 响应中。 * * @param \Illuminate\Http\Request $request * @param \异常 $异常 * @return \Illuminate\Http\Response */ 公共函数渲染($请求,异常$异常) {
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);
}
谢谢。
【问题讨论】:
标签: php wordpress laravel nginx laravel-5