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 在数据库中更改旧域后重定向到旧域的主要内容,如果未能解决你的问题,请参考以下文章