使用远程数据库在本地WordPress上加载媒体

时间:2015-06-10 作者:harryg

出于主题开发的目的,我有一个本地WordPress安装,可以从VM运行,可以通过以下方式访问:,http://local.app. 我在临时服务器上也有一个远程版本的站点,http://staging.example.com.

登台网站包含我设计主题的所有内容(如帖子、页面、WooCommerce产品等)。

所有这些都在服务器上的MySQL数据库以及中的媒体(图像、文件等)中wp-content/uploads.

现在,通过有用的指南on the Codex 标题为“两个wordpress,一个数据库”,我的虚拟机上有一个主题、插件和wordpress核心的本地副本,从远程临时服务器获取所有数据。

唯一的问题是,所有媒体都得到了404,因为出于某种原因,指向媒体文件的所有URL都链接到了我的本地vm,而不是临时服务器。E、 g.如果我访问媒体库并转到“编辑媒体”页面,“文件url”如下所示:

在临时服务器上:http://staging.example.com/wp-content/uploads/2015/04/greigh.jpghttp://local.app/wp-content/uploads/2015/04/greigh.jpg检查数据库时,所有attachment post类型的GUID具有完整URL,而不是相对URL。那么WordPress是如何构建这些URL的,有没有一种方法可以解决这个问题,而不必将整个媒体库复制到我的VM上?

4 个回复
SO网友:Kat

在核心的某个地方,URL在放入数据库时会得到绝对路径。

为什么不直接从登台服务器加载所有图像?在本地镜像文件时,让临时服务器保存文件。将以下内容添加到.htaccess 到您的本地上载文件夹,内容如下:

# Attempt to load files from production if they\'re not in our local version
<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  # Replace http://example.com with your production site\'s domain name
  RewriteRule (.*) http://example.com/wp-content/uploads/$1
</IfModule>

SO网友:DanielV

对于后来者,如果您的开发环境是LEMP,对于您的nginx(默认)站点,这将在主服务器声明中重定向大多数image 404错误:

  # Directives to send expires headers and turn off 404 error logging. Try images from production server
  location ~* \\.(png|jpe?g|gif|ico)$ {
      expires 24h;
      log_not_found off;
      try_files $uri $uri/ @production;
  }

  location @production {
      resolver 8.8.8.8;
      proxy_pass http://Production-or-StagingServerURL.com/$uri;
  }
在“array”位置添加其他资源扩展,如svg,以覆盖其他类型的404资源错误。

或者查看此答案以了解其他选项:How to configure nginx to redirect requests to the uploads directory to the production server?

SO网友:Nuno Sarmento

当然,您需要替换www.example。使用您自己的网站地址,但将其置于WordPress规则之上。htaccess文件意味着生产站点上的任何文件都将显示在开发站点上,不会提出任何问题,也不会下载任何文件。

RewriteEngine On
RewriteBase /
RewriteRule ^wp-content/uploads(.*)$ http://www.example.com/wp-content/uploads/$1 [L,R]

SO网友:brothman01

执行数据库搜索并替换where“local”。应用程序“已更改为”暂存。实例com\'

结束

相关推荐

Admin Theme customization

我遵循wordpress codex网站上关于通过插件创建管理主题的说明。我激活了插件,但我的样式表没有包含在<head>.. 这是我的代码:add_action( \'admin_init\', \'kd_plugin_admin_init\' ); add_action( \'admin_menu\', \'kd_plugin_admin_menu\' ); function kd_plugin_admin_init() { /* Register