wordpress本身不支持从两个不同的主机托管同一个站点.核心依赖于存储在数据库中的绝对URL,并且几乎用于核心逻辑的每个方面.这会导致许多多余的错误,例如500左右的SSL访问,因为它们会动态地将所有http://方案动态地改为https://.
因此,当您在dev.example.com上托管并迁移到staging.example.com并再次迁移到www.example.com时,您必须非常仔细地搜索&每次切换主机时,都要替换对数据库导出的操作.当您发现许多流行的wordpress插件将url序列化为数据库中的值时,这会导致其他问题.所以当你搜索&用staging.example.com替换dev.example.com,包含原始值的字符长度的序列化数据不再用新的更长格式反序列化.一些核心贡献者认为,后一个问题的解决方案是只设置与生产帐户具有相同字符数的登台站点…
与此类似,他们还建议交换主机映射,并且只在所有托管环境中使用production.com url.根据您的特定用例要求,如果您需要提供对场外客户端,技术文盲用户的访问权限(当然,与技术文化用户相比),这可能不是一个有效的解决方案.
但是wordpress本身具有许多强大的功能,是一个非常适应性强的快速开发平台.因此,您可以扩展核心框架,以便从中完成所需的大部分工作.当我遇到这种情况时,我必须开发一种适用于所有情况的解决方案.传统上,这个问题是通过root相对URL来解决的,它们在跨托管环境中工作,并且它们不会受到与分段迁移相同的方案更改,端口更改或子域交换实践的影响.
使用此插件:http://wordpress.org/extend/plugins/root-relative-urls/
(偏见?是的,我写了这个插件.)你得到root-relative urls,它是重要的动态主机,其中root-relative urls不起作用(比如RSS Feed).将站点迁移到不同主机所剩下的就是将wp-config.php文件移到www根之外(wordpress一般支持一级),这样你就可以在不同的服务器上维护不同的副本.或者,您可以使用基本的if语句来区分主机的服务器名称,并根据服务器定义关键的wordpress常量.最后你的内容,代码和&数据将无缝过渡.
值得注意的是,引用的插件需要设置对wp-config.php文件的写访问权限,从生产或公共可访问服务器的安全角度来看,这是一种非常糟糕的做法.也许您可以在受限制的暂存环境中轻松实现此功能,但是您需要在生产过渡中禁用和删除插件.
长话短说,是的,你可以在多个主机环境中托管wordpress.由于核心架构,长期吹捧的解决方案非常特定于案例且受选项限制.但该框架足够灵活,可以克服核心赤字.考虑到核心开发人员不断花费在克服级联问题上的努力,这个核心设计决策可能会在未来的某个时刻发生变化.但也有绝对的网络宗教虔诚的捍卫者,将暂时保持这种做法.也许是一个支持本地服务器迁移的不同平台(因为大多数人都选择其中任何一个),现在对你来说是更好的选择.