Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux wget克隆网站,链接到目录而不是index.html_Linux_Bash_Wget_Unix - Fatal编程技术网

Linux wget克隆网站,链接到目录而不是index.html

Linux wget克隆网站,链接到目录而不是index.html,linux,bash,wget,unix,Linux,Bash,Wget,Unix,我想用wget克隆一个wordpress博客,这样我就可以将它作为静态内容包含在我正在编写的web应用程序中 目前,我正在使用以下方法克隆站点: wget -rk http://sitename.com 这很好,但是生成的html中的链接指向index.html文件。我希望这些链接指向包含该文件的目录 e、 g.本页 wget正在生成一个目录“关于猫的博客文章”,并在其中放入index.html文件。该博客的链接写为“./blog post about cats/index.html”我希望它

我想用wget克隆一个wordpress博客,这样我就可以将它作为静态内容包含在我正在编写的web应用程序中

目前,我正在使用以下方法克隆站点:

wget -rk http://sitename.com
这很好,但是生成的html中的链接指向index.html文件。我希望这些链接指向包含该文件的目录

e、 g.本页 wget正在生成一个目录“关于猫的博客文章”,并在其中放入index.html文件。该博客的链接写为“./blog post about cats/index.html”我希望它们在哪里“./blog post about cats/”

我想我想要它是因为我觉得url中的index.html看起来有点难看,而且这些页面都是关于表示的

有什么想法吗?使用wget或其他命令行工具可以实现这一点吗


谢谢。

我假设wget在默认情况下不会这样做,因为您的本地web服务器可能配置为提供目录的索引页,而不是index.html。最简单的解决方案是使用正则表达式对所有获取的HTML文件进行后处理:

find -name '*.html' | xargs sed -rie 's/href="([^"]*)\/index\.html"/href="\1\/"/gi'

如果此站点上的页面是其他类型的文件,如.php文件,请替换“*.php”或任何合适的文件。正则表达式的功能是识别href=“stuff/index.html”格式的字符串并删除index.html。xargs和find用于将其应用于所有页面,sed的“-i”标志使其能够就地修改文件。正则表达式中的“gi”标志使其替换所有出现的内容,并且不区分大小写(因为HTML不区分大小写)。

您可以让
wget
为您执行此操作。尝试使用:

wget–镜像–转换链接–html扩展–等待=1https://example.com/

您可以在此处找到更多详细信息:

谢谢,伙计,这样就可以了。与我在此期间提出的类似,但是您的解决方案regexp要好得多。