【问题标题】:Copy of existing wordpress site returns 302 in Docker Windows现有 wordpress 站点的副本在 Docker Windows 中返回 302
【发布时间】:2019-02-01 08:17:25
【问题描述】:

我是 WP 菜鸟,但必须修复现有 wp 网站上的一些错误。我不想在 live 环境中这样做,所以我尝试在 docker 中镜像它(apache、php、mysql ......所有与 live 环境类似的版本)。

  • 我从他们的 ftp 复制了所有的 php
  • 迁移了mysql数据

当我访问这个本地站点时,我会收到一个 302 重定向到实时站点

我在wp-config.php的开头添加了

define( 'WP_HOME', 'http://localhost:8180' );
define( 'WP_SITEURL', 'http://localhost:8180' );

但还是一样。 有什么想法吗?


这是在 cmets 中询问的完整 wp-config.php

<?php
/** changing the site url (https://codex.wordpress.org/Changing_The_Site_URL) */
define( 'WP_HOME', 'http://localhost:8180' );
define( 'WP_SITEURL', 'http://localhost:8180' );

define('AUTOMATIC_UPDATER_DISABLED',true);
define('DB_NAME', 'replaced');
define('DB_USER', 'replaced');
define('DB_PASSWORD', 'replaced');
define('DB_HOST', 'db:3306');
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');
define('AUTH_KEY',         'replaced');
define('SECURE_AUTH_KEY',  'replaced');
define('LOGGED_IN_KEY',    'replaced');
define('NONCE_KEY',        'replaced');
define('AUTH_SALT',        'replaced');
define('SECURE_AUTH_SALT', 'replaced');
define('LOGGED_IN_SALT',   'replaced');
define('NONCE_SALT',       'replaced');
$table_prefix  = 'wp_';
define('WPLANG', 'de_DE');
define('WP_DEBUG', true);

if ( !defined('ABSPATH') )  define('ABSPATH', dirname(__FILE__) . '/');
/** Sets up WordPress vars and included files. */
require_once(ABSPATH . 'wp-settings.php');
/* fixes safe_mode problems */
define('WP_TEMP_DIR', ABSPATH . 'wp-content/');

更新

我使用 xdebug 跟踪正在运行的代码。由于数据库条目(选项表)“_transient_pll_languages_list”,重定向转到了实时站点。它将 URL 缓存到实时站点。 由于它被称为瞬态,我只是将其删除。现在我仍然有重定向(现在是 301)但是到我的本地站点。所以现在我有了一个反馈循环。

我想接下来我会搜索并删除所有“瞬态”条目。 有没有更简单的方法从数据库中删除所有缓存的数据?

【问题讨论】:

    标签: wordpress docker docker-compose


    【解决方案1】:

    我自己也有同样的要求在本地开发一个现有的 WordPress 网站,所以我做了这个存储库:https://github.com/lumonald/existing-wordpress-development-docker

    您可以禁用.env 文件中的任何缓存插件,它会自动为您查找/替换数据库中的 URL。

    它会在后台为您处理wp-config.php,但是如果您需要对其进行编辑,您可以将其作为卷添加到docker-compose.yml 中的 WordPress 容器中

    请记住,这使用的是最新版本的 WordPress,但这可以在 docker-compose.yml 文件中进行更改,如果需要,也可以使用 MySQL 版本。

    【讨论】:

      【解决方案2】:

      我没有使用过 docker,但根据我的说法,以下代码缺少文件夹名称。

      define( 'WP_HOME', 'http://localhost:8180' );
      define( 'WP_SITEURL', 'http://localhost:8180' );
      

      应该是这样的

      define( 'WP_HOME', 'http://localhost:8180/foldername/' );
      define( 'WP_SITEURL', 'http://localhost:8180/foldername/' );
      

      否则您可以直接更改 wp_options 表中的 URL,将 siteurl 和 home 更改为您的实际 URL。另外,请尝试清除缓存文件夹或禁用缓存插件(如果存在)。

      我希望这能解决您的问题。

      问候

      【讨论】:

      • 谢谢,你指的是哪个文件夹名? index.php 直接位于具有默认 vhost 配置的 apache 容器的 /var/www/html 中,所以我猜该站点应该直接位于 /。我尝试在数据库中更改 siteurl 和 home 但与 wp-config 中的更改相同...直到重定向到实时页面
      • 我们在使用 xampp 或 wamp 时所做的事情是在路由目录中创建一个文件夹,然后将我们的站点文件添加到那里。你也可以试试。另外请使用默认代码创建一个新的 htaccess 文件,您可以从那里获取它codex.wordpress.org/htaccess
      • 请检查 htaccess 文件以及是否有缓存插件,然后您需要禁用它。
      • 嗯,所以你的意思是我可以把完整的 wordpress 文件放到一个文件夹中,然后尝试 localhost/folder。我猜当它重定向到实时页面时,它会从某个地方获取数据。所以它似乎达到了index.php。这就是为什么我不认为问题出在路径上。 .htaccess 不变
      • 在原帖上面加了
      【解决方案3】:

      我不知道到底是什么问题,但在停用 SEO 插件后问题就消失了。再次激活 SEO 插件后,该网站仍然有效。 所以我猜这是某种插件缓存问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-07-11
        • 2016-03-07
        • 2012-01-28
        • 2016-08-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多