我正在尝试存档我的旧 wordpress 博客。到目前为止,我发现最好的方法是通过 wget。问题是它生成的文件的名称,如“index.html?cat=3&paged=3.html”。
当我在浏览器中从本地驱动器打开此文件时,它运行正常。当我将其放在本地 Apache 服务器上时,页面运行正常。但是当我将其放在另一个 Web 服务器上,转到“index.html?cat=3&paged=3.html”时,只会将其发送到“index.html”。
我认为它这样做是因为“cat...”是 index.html 的某种参数,但我不明白为什么这种情况发生在一台服务器上,而在另一台服务器上不会发生。
解决这个问题的办法是将所有文件名和文件链接中的“?”替换为“_”。但是,我仍然很好奇服务器配置中的哪些配置会导致这种情况的处理方式不同。(他暗自希望这是一个可以放入 htaccess 文件中的简单问题)
答案1
? 后面的部分称为 URL 的查询部分,通常表示 Web 服务器要传递给外部脚本或程序(CGI、servlet 等)的变量名和值。
我猜测,但也许 Apache 仅在路径部分映射到启用了脚本(CGI 等)的目录(使用 ScriptAlias、+ExecCGI 等)时才分离出查询部分。
答案2
最后,我只是将所有文件重命名,将“?”替换为“_”。因此,“index.html?cat=3&paged=3.html”变成了“index.html_cat=3&paged=3.html”。
然后我必须更新 HTML 中的所有链接以反映名称。使用 regexxer 很容易。这不是最好的解决方案,但它确实有效。谢谢。