问题 Zend框架和Wordpress集成


我们在ourdomain.com上有一个现有的Zend Framework站点,在blog.ourdomain.com上有一个wordpress博客

我们希望将博客迁移到mydomain.com/blog上的网站 - 但我似乎已经搜索到了地球的尽头,无法找到方法。我尝试了各种.htaccess的东西,设置博客控制器,并包括一些wordpress文件等 - 但无济于事。

有没有人有任何想法?

虚拟主机设置:

ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/Users/bradyeager/Sites/TWPZend/public"
ServerName twps
ErrorLog "logs/twps-error-log"
CustomLog "logs/twps-access_log" common

    选项索引FollowSymLinks

AllowOverride All

Order allow,deny
Allow from all


6979
2017-09-26 04:21


起源

出了什么问题?另外,你可以发布你用于主站点和WordPress博客的.htaccess文件吗? - Tim Stone
首先我在httpd.conf中有一个别名:Alias / blog /“/ users / me / blog”然后我就有了标准的Zend .htaccess SetEnv APPLICATION_ENV开发RewriteEngine On RewriteCond%{REQUEST_FILENAME} -s [OR] RewriteCond% {REQUEST_FILENAME} -l [OR] RewriteCond%{REQUEST_FILENAME} -d RewriteRule ^。* $ - [NC,L] RewriteRule ^。* $ index.php [NC,L]但我不知道为什么/ blog / alias不会访问任何子目录。 / blog /工作正常 - /博客/帖子/无论什么给出了一个“无效的控制器博客” - Brad
也许您需要添加与这些Wordpress页面相对应的ZF路由?请参阅下面的答案。 - David Weinraub


答案:


通过修改.htaccess文件以不发送任何以。开头的内容来实现此目的的最有效和最简单的方法 /blog 到ZF应用程序 - 只需将其传递给Wordpress。当然,Wordpress必须安装在文档根目录中,才能正常安装它。

一个例子:

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]

RewriteRule ^blog - [NC,L]

RewriteRule ^.*$ index.php [NC,L]

所有这些关于在ZF应用程序中创建自定义控制器,操作和路线,然后通过您的应用程序传递到Wordpress的废话绝对是荒谬的。您将执行应用程序引擎的完整调度周期,只是转发到另一个应用程序?


15
2017-09-26 16:48



这终于到了我的目标,但仍无济于事。当我有一个必须运行Zend Framework的index.php时,这应该如何工作。我现在要在公共/博客中尝试安装wordpress,并将最后一行更改为blog / index.php - Brad
忽略我的最后评论。我完全删除了别名,并将wordpress安装在公共/博客中,并使用您的确切.htaccess - 但仍然使用类似的网址 网站/博客/ 2010/09/23 /目的地蜜月到果阿,印度 我得到无效的控制器。为什么上面没有忽略这个URI - 它仍然重写它由zend处理 - Brad
当你的应用程序安装在你的目录树中的哪个地方时,我已经改变了我的例子。在它假定域的根之前。我测试了这个,它工作正常。 - jason
我很感激,但仍然没有运气。我在原始帖子中发布我的VirtualHost设置 - 目录指令中是否有某些内容可能不允许这样做。这就像它根本不处理^博客或!^博客规则。它只是因为/ blog /是一个目录而提供主页:RewriteCond%{REQUEST_FILENAME} -d - Brad
您应用的基本网址是什么?它位于您域名的根目录下吗?如果没有,你是否正确设置了RewriteBase指令? - jason


我经常使用这个配置,这就是我的工作:

 /application
 /library
     /Zend 
     /wordpress ( symlink to my wordpress folder )
 /public
     index.php ( i add wordpress & the zend folder to my include path )

不可否认,考虑到过程中包含的所有不必要的东西,这是一个残酷的解决方案......

编辑:

//定义应用程序目录的路径
定义( 'APPLICATION_PATH')
    || define('APPLICATION_PATH',realpath(dirname(__ FILE__)。'/。/ application'));

//定义应用程序环境
定义( 'APPLICATION_ENV')
    || define('APPLICATION_ENV',(getenv('APPLICATION_ENV')?getenv('APPLICATION_ENV'):'production'));

//确保library /在include_path上
set_include_path(implode(PATH_SEPARATOR,array(
    realpath(APPLICATION_PATH。'/../library'),
    realpath(APPLICATION_PATH。'/ / / library / wordpress'),
    get_include_path()
)));

//获取wordpress环境
define('WP_USE_THEMES',false);
require_once'wp-blog-header.php';

/ ** Zend_Application * /
require_once'Zend / Application.php';



//创建应用程序,引导程序和运行
$ application = new Zend_Application(
    APPLICATION_ENV,
    APPLICATION_PATH。 '/configs/application.ini'
);
$应用程序 - >引导()
             - >运行();

1
2017-09-26 16:38



您可以在包含路径中包含wordpress文件夹的情况下发布代码吗?我有整个“库”文件夹 - Brad
@Paztrick:是的,这有点残酷 - 这并不是说我自己没有做过。 ;-)特别是如果WP数据库访问是通过mysql_xxx()调用而ZF数据库访问是通过像PDO这样的东西。然后单个页面请求可以创建两个不同的数据库连接,可能创建到同一个数据库。看到 stackoverflow.com/questions/2316413/... - David Weinraub
好的,所以所有这些都包括在内,但我仍然不知道这应该如何工作。您是否在为博客添加控制器?一切仍然是通过Zend App路由并抛出无效控制器(博客)错误 - Brad
使用此解决方案,您需要添加控制器,这不是您博客的重定向,这是一个集成,这意味着您可以访问所有Wordpress功能,现在您可以通过调用Wordpress函数将内容集成到主站点内在您的控制器中。 - PatrickS


关于将非ZF站点迁移到ZF的最佳文章之一来自 Chris Abernethy

和你一样,他为那些非ZF处理的脚本设置了一个特殊的控制器。但是,他(最终)设置了与那些非ZF页面相对应的ZF路由,而不是使用外部.htaccess。

可能不会直接适用于您的案例,因为您的示例涉及到 子域 而他的涉及页面 相同 域。但是那里有一些好主意可能会有所帮助。


0
2017-09-26 07:16



RewriteEngine On RewriteCond%{REQUEST_URI} ^ / blog RewriteRule ^。* $ - [NC,L] RewriteCond%{REQUEST_FILENAME}!-s RewriteCond%{REQUEST_FILENAME}!-l RewriteCond%{REQUEST_FILENAME}!-d RewriteCond%{REQUEST_URI} !^ / blog RewriteRule ^。* $ index.php [NC,L] - Brad


请参阅杰森提供的正确答案。只需确保你的wordpress .htacess文件重写为正确的index.php默认情况下,它将重写回基本的index.php - 属于Zend。我的解决方案是将Wordpress的.htaccess RewriteBase改为/ blog而不是/


0
2017-09-26 18:36





我写了一个开源库,可以解决你的问题Vulnero,它允许你在WordPress中运行你的Zend Framework应用程序。您的路由由您的应用程序处理,其他一切都由WordPress处理。如果您愿意,甚至可以在WordPress模板中呈现您的视图。集成身份验证,数据库连接等等。 Source在GitHub上,或者你可以在那里阅读文档 http://www.vulnero.com/


0
2018-02-15 23:44



虽然这可能对其他一些问题有帮助,但在这里完全没用。这个问题是关于路由请求的 .htaccess。两年前有人问及回答。你的问题什么也没有增加,似乎只是一个广告。 - Charles
不确定你如何发现它毫无价值,因为在他的ZF应用程序和他的WP安装之间路由请求正是我为该项目编写的。 - Andrew Kandels


要将Wordpress迁移到ZF,您可以使用 wploader
当我使用wordpress作为多个站点启用时,这对我有用。
您可以在wordpress文件中使用所有ZF控制器对象。
你的wordpress不需要任何黑客攻击,因此你可以轻松升级或更新你的wordpress版本。


0
2017-12-27 10:18