使用 wget 迁移网站到另一台服务器

使用 wget 迁移网站到另一台服务器

我有一个网站,例如,位于http://www.abc.com。我需要将其提供给,比如说,http://www.cde.com。我尝试使用 wget 下载该网站,但遇到了两个问题:

  • 有很多内部绝对链接。 Wget 可以将它们转换为相对链接,但如果我将它们转换为插入的根相对链接(即/mypath/myfile而不是../../mypath/myfile)或新位置中的绝对链接,http://www.cde.com/mypath/myfile我会感觉更安全
  • 该网站大量使用脚本进行导航,因此有些路径看起来像http://www.abc.com/index.html?p=123等。wget 下载并将它们保存在诸如index.html?p=123, index.html?p=456等文件中。它适合离线查看,但我希望在新网站中脚本可以工作,所以我会只需要一个index.html文件(加上 requisits、csses、脚本,但我想我已经知道如何下载它们)

我知道我可以简单地用“?”删除多余的文件。在文件名中,但我希望首先避免不必要的下载

我该如何解决这两个问题?

答案1

我认为你无法用 wget 做你想做的事情。

问题是,wget 看到的页面就像浏览器看到的一样。这意味着 wget 只是获取 HTML 代码,尽管真正的源文件可能是 PHP 文件,甚至是 Ruby 文件或其他文件。

如果您是网站的所有者,您应该能够使用 sftp、ftp 或 scp 访问网站根文件夹,然后可以将整个页面复制到新服务器。

现在,您可以使用具有良好重构工具的编辑器来更改所有旧链接以匹配新域名。

答案2

除非源网站仅由具有静态内容的静态页面组成,否则用于wget迁移网站是一个坏主意,但这不是您的情况。

在大多数情况下,页面的内容是由模板渲染引擎(可能是更复杂框架的组件)使用预定义的模板和位于某些持久存储(如数据库或硬盘驱动器)中的数据在服务器端生成的,或者使用由用户。

例如,表单 的链接http://www.abc.com/index.html?p=123可以http://www.abc.com/index.html?p=456指示相关页面的内容是在服务器端从同一模板(例如:index_template.php)生成的,并使用数据库中的数据,其中产品在一种情况下具有 id 123,在另一种情况下具有 id 456。

因此,要将您的网站迁移到另一个位置,您应该能够访问网站的源代码和所有持久数据。只有这样你才能对原始网站进行功能齐全的克隆。

相关内容