我有一个WP安装,需要移动到一个新的网站URL。
我试过上面列出的常用方法this codex. 所有这些都会产生相同的问题。当我在网站上点击这样的链接时:
<a href="https://site.mydomain.com/path/to/post">
web服务器接收到的信息表示:
The requested URL /path/to/post/ was not found on this server.
即使我将URL粘贴到浏览器中也是如此。
请注意,某些URL确实可以工作,例如此CSS文件:
http://site.mydomain.com/wp-includes/css/dist/block-library/style.min.css?ver=5.1.1
但不是博客帖子。
EDIT with more info
当我查看页面的源代码时,我发现所有的HREF实际上都是正确的。但是,当单击时,指向帖子(但不指向CSS文件)的链接缺少“http://”前缀,而是呈现为服务器根相对URL。
因此,我对siteurl选项的更改is 正在制作中,但有关该网站的某些内容正在破坏一些(但不是全部)URL。
此后,我尝试了一次全新的WP安装,并为此更改了siteurlNOT 展示这个问题,所以我假设它是在这个网站的WP安装的东西。
Further forensics
即使尝试以下操作,问题仍然存在:
全部删除。htaccess文件停用所有插件,使用匿名模式查看
使用另一个web浏览器加载网站(使用Chrome,安装并使用了新的Firefox安装)切换到不同的主题(二十一世纪)将其中一个断开的URL放入普通URL。html测试文件
最合适的回答,由SO网友:TommyPeanuts 整理而成
permalink结构设置为“Post name”:
http://site.mydomain.com/sample-post/
将其设置为“普通”
http://site.mydomain.com/?p=123
, 已修复此问题。
我不知道为什么post name会引起问题。当WP安装被移动到另一个web服务器时,vhost配置中没有Apache重写规则,所有其他设置都是相同的。我也无法解释最初安装中的post-name permalink结构是如何工作的。
Wordpress的结局很奇怪,我永远也不会理解。谢谢大家的帮助,非常感谢。
SO网友:JayTh
删除现有数据库。再次导入它并尝试使用以下查询更新链接:
UPDATE wp_options SET option_value = replace(option_value, \'http://www.oldurl\', \'http://www.newurl\') WHERE option_name = \'home\' OR option_name = \'siteurl\';
UPDATE wp_posts SET guid = replace(guid, \'http://www.oldurl\',\'http://www.newurl\');
UPDATE wp_posts SET post_content = replace(post_content, \'http://www.oldurl\', \'http://www.newurl\');
UPDATE wp_postmeta SET meta_value = replace(meta_value,\'http://www.oldurl\',\'http://www.newurl\');
参考号:
Change and Update WordPress URLS in Database When Site is Moved to new Host