我们在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
通过修改.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的废话绝对是荒谬的。您将执行应用程序引擎的完整调度周期,只是转发到另一个应用程序?
我经常使用这个配置,这就是我的工作:
/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'
);
$应用程序 - >引导()
- >运行();
关于将非ZF站点迁移到ZF的最佳文章之一来自 Chris Abernethy。
和你一样,他为那些非ZF处理的脚本设置了一个特殊的控制器。但是,他(最终)设置了与那些非ZF页面相对应的ZF路由,而不是使用外部.htaccess。
可能不会直接适用于您的案例,因为您的示例涉及到 子域 而他的涉及页面 相同 域。但是那里有一些好主意可能会有所帮助。
请参阅杰森提供的正确答案。只需确保你的wordpress .htacess文件重写为正确的index.php默认情况下,它将重写回基本的index.php - 属于Zend。我的解决方案是将Wordpress的.htaccess RewriteBase改为/ blog而不是/
我写了一个开源库,可以解决你的问题Vulnero,它允许你在WordPress中运行你的Zend Framework应用程序。您的路由由您的应用程序处理,其他一切都由WordPress处理。如果您愿意,甚至可以在WordPress模板中呈现您的视图。集成身份验证,数据库连接等等。 Source在GitHub上,或者你可以在那里阅读文档 http://www.vulnero.com/。
要将Wordpress迁移到ZF,您可以使用 wploader。
当我使用wordpress作为多个站点启用时,这对我有用。
您可以在wordpress文件中使用所有ZF控制器对象。
你的wordpress不需要任何黑客攻击,因此你可以轻松升级或更新你的wordpress版本。