Drupal - 站点转移。更改数据库中的绝对 URL?

Posted

技术标签:

【中文标题】Drupal - 站点转移。更改数据库中的绝对 URL?【英文标题】:Drupal - Site transfer. Change absolute URLs in the database? 【发布时间】:2015-09-03 20:31:04 【问题描述】:

我在已插入绝对链接的 drupal(块、页面等)中有内容。我移动了站点,块和页面中的 url 仍然指向旧域。

如何在数据库中更改它?我需要定位哪个数据库表?我想做类似的事情:

UPDATE table SET content = REPLACE(content,'www.domain.com/old','www.domain.com/new');

谢谢!

【问题讨论】:

【参考方案1】:

Drupal 它本身不使用绝对路径(就像 WordPress 那样),因此移动“普通”Drupal 网站不需要像这样的任何干预。 我的建议是始终对内部链接使用根相对路径。

基本上,您必须用新域替换旧域的所有外观,因此最好将数据库导出到 sql 文件,在该 sql 文件上进行搜索/替换,然后将更改的转储文件导入新域数据库。也许在数据库导出之前清除所有缓存以减少数据库大小...

【讨论】:

绝对网址可以存储在缓存中。 P.S.您不必搜索整个绝对路径...只需搜索旧域并将其替换为新域即可。相对路径将保持不变。【参考方案2】:
    首先备份您的数据库! 安装Adminer script 并在整个数据库中搜索以前的(旧)域名。如果您喜欢命令行界面,或者构建 SQL 查询来搜索所有表 请参阅How to search and replace all instances of a string within a database? 了解如何替换整个数据库中的字符串。

【讨论】:

通过数据库转储进行搜索/替换不是更容易吗? 这是第 3 步中描述的第一种方法。这并不总是最佳解决方案,因为数据库的大小可能非常庞大。 不错,但值得一试。【参考方案3】:

对数据库进行这种更改可能不是最好的做法,为什么不尝试在 .html 模板文件的 head 标记中使用 base html 标记:

<head>
<base href="http://www.domain.com/new"
</head>

有关此标签的更多信息,请参阅:http://www.w3schools.com/tags/tag_base.asp

【讨论】:

以上是关于Drupal - 站点转移。更改数据库中的绝对 URL?的主要内容,如果未能解决你的问题,请参考以下文章

更改 cPanel 密码后,Drupal 站点上的访问被拒绝

用于在URL别名更改上更改Drupal站点名称

如何以编程方式更改 Drupal 用户密码?

如何将整个站点从 HTTP 重定向到 HTTPS,Drupal 站点中的 2 个页面除外?

Drupal 8 如何在子站点上使用不同的主题

是否可以使用 Drush 更改 Drupal8 管理员密码?