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

Posted

技术标签:

【中文标题】Prestashop 在数据库中更改旧域后重定向到旧域【英文标题】:Prestashop redirects to old domain after changing it in Database 【发布时间】:2015-08-04 13:31:45 【问题描述】:

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

我遵循的过程是

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

现在的问题是,当我打开 dev.domain.com 时,我仍然会被重定向到 domain.com,我不知道接下来要尝试什么。

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

有什么我可以尝试的建议吗?

PS:domain.com 和 dev.domain.com 是两个不同的域。反正不相似

【问题讨论】:

彻底删除浏览器缓存并检查? 再次如果问题没有解决检查链接:- prestashop.com/forums/topic/… 非常感谢,它确实是用于重定向的 Firefox 缓存。每个域中的正常 cookie 删除不起作用,所以我没有进一步检查,但似乎重置缓存完全解决了这个问题。非常感谢您的帮助 【参考方案1】:

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

ps_configuration 表并将 PS_SHOP_DOMAIN 和 PS_SHOP_DOMAIN_SSL 更改为您的新域名,例如mydomain.com ps_shop_url 表并再次将“domain”、“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/ 了解如何为您的浏览器进行“硬刷新”。

【讨论】:

感谢您就此事提供建议,但是在我的情况下,数据库中的每个条目都已更改为正确的 url,因为我在 db sql 转储上进行了全局搜索和替换,这只是一个缓存问题。但是,您让我有机会确切说明我应该清除缓存的哪一部分。它在工具 -> 选项 -> 高级 -> 网络 -> 缓存的 Web 内容中【参考方案2】:

首先,您能够以正确的方式完成每一步,这很好。现在的问题是:-

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

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

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

【讨论】:

再次感谢您的帮助。我们忘记做的总是简单的事情:) 正确经常发生这种事情。感谢您的标记。:):):)【参考方案3】:

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

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

以下是一些基本脚本,我用于自动执行 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 可在此处访问

【讨论】:

【参考方案4】:

这是一个旧帖子,但也许有人会得到帮助

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

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

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

完成

【讨论】:

【参考方案5】:

清除浏览器缓存,这个错误什么都看不到,真正的答案是更改 ps_configuration 和 ps_shop_url 表中的 PS_SHOP_DOMAIN 和 PS_SHOP_DOMAIN_SSL

【讨论】:

以上是关于Prestashop 在数据库中更改旧域后重定向到旧域的主要内容,如果未能解决你的问题,请参考以下文章

htaccess 将旧域重定向到新域

如果用户已缓存站点,如何将用户从旧域重定向到新域

prestashop URL无意义重定向

将旧域的每个页面重定向到新域上的相同页面URL

在 .htaccess 中使用 HTTPS 将旧域重定向到新域

将旧域的所有网页重定向到新域索引