是否可以通过MVC应用程序来路由WordPress

时间:2015-03-18 作者:r3wt

我在根目录中有一个slim framework应用程序/.

我在“/blog/”子目录中安装了wordpress。

这一切都很好,我可以轻松访问/blog/ 文件夹和任何物理文件。

但是,在wordpress中使用永久链接时会出现问题。我还没有找到将请求正确传递给wordpress的方法。

所以我首先尝试的是:

$app->slim->notFound(function() use($app) { 
    //to make pretty url\'s work with turdpress, we must see if that request was intended for our blog route.
    if(strpos($app->slim->request->getPath(),\'/blog/\') !== false){
        $app->slim->response()->status(404);
    }else{
        $app->args[\'title\'] .=\'404 Not Found\';
        $app->args[\'scripts\'] = \'js/404.js\';
        echo $app->loadTemplate(\'404.twig\')->render($app->args); 
    }
}); 
在这里,我们捕获博客路由的请求,并将404返回给nginx。这就是我试图用nginx做的。conf这对我来说很有意义,但似乎不起作用。

location / {
    include /etc/nginx/mime.types;
    index index.php;
    try_files $request_uri $request_uri/ /index.php?$query_string;
    error_page 404 = @default;
}
location /blog {
    include /etc/nginx/mime.types;
    index index.php;
    try_files $request_uri $request_uri/ /index.php?$query_string;
}

location @default{
    include /etc/nginx/mime.types;
    index index.php;
    try_files $request_uri $request_uri/ /blog/index.php?$query_string;
}
所以这就是我所尝试的,但显然不起作用。所以我有了第二个主意。也许在NotFound控制器中,我可以尝试包含索引。php来自wordpress,因为从逻辑上讲,这是permalinks唯一会被使用的地方(或者我会这样假设)。这将是一个相当大的工作,所以在我完成之前,我想看看是否有更好的想法围绕着这一点,或者是否有其他人以前在wordpress上有过这个问题

1 个回复
SO网友:r3wt

看来我的最新想法是正确的。仅仅包含wordpress的索引文件就足以让permalinks为博客帖子工作。

$app->slim->notFound(function() use($app) { 
    //to make pretty url\'s work with turdpress, we must see if that request was intended for our blog route.
    if(strpos($app->slim->request->getPath(),\'/blog/\') !== false){
        include __DIR__ . \'/../../blog/index.php\';
    }else{
        $app->args[\'title\'] .=\'404 Not Found\';
        $app->args[\'scripts\'] = \'js/404.js\';
        echo $app->loadTemplate(\'404.twig\')->render($app->args); 
    }
}); 
我很想知道是否有人认为这很危险。

结束