Prestashop 在数据库中更改旧域后重定向到旧域

Prestashop redirects to old domain after changing it in Database

我正在尝试创建用于开发目的的 prestashop 1.6 电子商店的副本,从 domain.com 到 dev.domain.com

我遵循的流程是

  1. 禁用缓存和编译
  2. 将文件从 domain.com 复制到 dev.domain.com
  3. 从 domain.com 转储 mysql 数据库到 dump.sql
  4. 在 vi 上打开 dump.sql 并使用 :%s/domain.com/dev.domain.com/g
  5. 搜索和替换
  6. 在 devdb
  7. 中导入 dump.sql
  8. 打开 prestashop cpanel 并确认所有商店 url 配置已更改。
  9. 打开 phpmyadmin 并检查所有 domain.com 条目是否已更改为 dev.domain.com
  10. 已从 /cache/smarty/compile /cache/cachefs
  11. 中删除文件
  12. 从 prestashop 重建 .htaccess 文件。
  13. 更改了 devdb 中的登录凭据,以便网站加载该凭据

现在的问题是,当我打开 dev.domain.com 时,我仍然被重定向到 domain.com,我不知道下一步该做什么。

在 devdb 的 phpmyadmin 中搜索 domain.com 没有产生结果 grep -ri 'domain.com' * 在文件中也没有产生结果

有什么建议我接下来可以尝试吗?

PS: domain.com 和 dev.domain.com 是两个不同的域。一点都不相似

首先,您以正确的方式执行每个步骤真是太好了。现在的问题是:-

当您在浏览器上 运行 任何域时。浏览器为此创建缓存和 cookie。如果您更改域的任何设置,除非您完全清除浏览器缓存和 cookie,否则它不会反映。

所以只需删除您的浏览器缓存和 cookie 并尝试检查它是否有效。

注意:- 根据您遵循的流程,似乎存在唯一的问题。

对于 prestashop 1.7,您必须修改数据库中的一些值:

  • ps_configuration table 并将 PS_SHOP_DOMAIN 和 PS_SHOP_DOMAIN_SSL 更改为您的新域名,例如mydomain.com
  • ps_shop_url table 并再次将“域”、“domain_ssl”字段更改为您的新域名和“physical_uri'。如果您将文件复制到 根文件夹,路径将只是“/”。

更多关于https://blog.premium-templates.eu/how-to-move-prestashop-from-localhost-to-domain-or-vice-versa

注意:浏览器缓存重定向,您必须清理浏览器缓存。检查 https://www.getfilecloud.com/blog/2015/03/tech-tip-how-to-do-hard-refresh-in-browsers/ 了解如何为您的浏览器执行“硬刷新”。

清除浏览器缓存,没有看到这个错误,真正的答案是在 ps_configuration 和 ps_shop_url table 中更改 PS_SHOP_DOMAIN 和 PS_SHOP_DOMAIN_SSL

您的程序是正确的,只有少数几个因素可能导致您的问题

  1. 确保您的 Web 服务器配置中没有手动重定向(或 Apache 的旧 .htaccess
  2. 从数据库更改 Prestashop 域(详见下文)
  3. 从数据库中清除所有缓存更新 Prestashop 域(详见下文)
  4. 始终在 incognito/developer 模式下使用浏览器进行测试,禁用所有缓存的重定向。我个人在开发者模式下使用隐身 Chrome window
  5. 调试时,最好检查网络服务器的日志以及浏览器的网络交换,以确定问题的根源

这是我用来为 Prestashop 1.7 自动执行缓存清理和域更改的一些基本脚本。

1。更改 Prestashop 的域

使用模板文件生成.sql文件来修补数据库。如果更方便,您可以直接在数据库上手动 运行。

patch-domain.sql.template:

UPDATE ps_configuration SET value='${SHOP_DOMAIN}' WHERE name='PS_SHOP_DOMAIN';
UPDATE ps_configuration SET value='${SHOP_DOMAIN}' WHERE name='PS_SHOP_DOMAIN_SSL';
UPDATE ps_shop_url SET domain='${SHOP_DOMAIN}', domain_ssl='${SHOP_DOMAIN}';

生成真正的.sql补丁文件,并应用

$ export SHOP_DOMAIN=mydomain.com
$ envsubst < patch-domain.sql.template > patch-domain.sql
$ mysql -u <username> -p <database> < patch-domain.sql

2。清除 Prestashop 缓存

删除除index.php

之外的所有缓存文件

clear-cache.sh:

#!/bin/bash
base_dir='./shared/prestashop/html'

# Clear class index in case any override changed
rm ${base_dir}/cache/class_index.php

declare -a cache_dirs=(
    "cache/smarty/compile"
    "cache/smarty/cache"
    "cache/cachefs"
    "img/tmp" # You might want to keep tmp images
    "themes/*/cache"
    "var/cache")

# Clear all cache folder, ignoring 'index.php'
for dir in "${cache_dirs[@]}"
do
    echo Cleaning ${base_dir}/${dir}...
    find ${base_dir}/${dir} -type f ! -name index.php -delete
done

编辑:更新后的 gist 可在此处访问

这是一个旧的 post 但也许有人会得到帮助

  1. 按照以下步骤操作:https://zemez.io/prestashop/support/how-to/prestashop-1-7-transfer-website-one-domain-another/

  2. 在 parameters.php 中也将日期更改为实际日期

  3. 在config/defines.inc set define('PS_MODE_DEV', true);所以管理面板不会是空白页

完成