为什么我的 Wordpress RSS 提要显示 IP 地址和 post ID,而不是完整的 URL?

Why is my Wordpress RSS feed showing IP address and post ID, rather than full URL?

以我的 Wordpress 网站为例。com/feed/ 我注意到我的 RSS 显示 IP 地址并使用 post ID,而不是显示实际的 URL。它还显示 http 而不是 https。这是缓存问题吗?我不知道为什么,或者如何解决。目前,RSS 提要将页面 link 显示为内容:

<guid isPermaLink="false">http://44.78.4.233/?p=3993</guid>

而不是

<guid>https://www.example.com/my-post/</guid>

我在注意到 Google Search Console 显示了大量甚至不存在的内部页面 link 之后注意到了这个问题,并且都使用了 IP 地址。不确定这是否与我的提要有关。

当我第一次设置站点时,我使用的是 IP,然后再指向域。 Google 一定是在我将它添加到控制台之前就已经对其进行了抓取。最后一次抓取是 1 月 14 日,就在我指向域之前。这是我的 .htaccess

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^44\.78\.4\.233$
RewriteRule ^(.*)$ https://www.example.com/ [L,R=301]
</IfModule>

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

Options -Indexes

网站运行良好。将所有流量重定向到首选 https。还将 IP 重定向到 https。 W3C 验证器没有错误。还将站点的所有版本添加到 Google 控制台并进行验证,并将首选版本设置为 https://www. Also submitted sitemap URL https://www.example.com/sitemap_index.xml,这是从 Yoast 插件生成的。我检查了站点地图,它看起来不错。

尝试重建 permalinks。没有修复仍然显示 IP 和 post ID 的 RSS 提要问题。困惑。

WordPress 永久链接旨在是唯一的。它们不会改变,即使您更改了首选域。新值使用首选域,但旧值将保留原始值,除非您手动编辑值。您可以手动编辑 wp_posts table 以使用域的新值更新 guid,您将回到正轨。

您可以使用以下内容将所有条目中的协议和 IP 替换为您最喜欢的 SQL 编辑器中的新协议和域:

UPDATE `wp_posts` SET `guid`=replace(`guid`,'http://1.1.1.1/','https://example.com/');

不过,这不会重建路径部分。您可以使用这个 (caveat emptor):

对根元素执行此操作(只要您没有更改默认值)
UPDATE `wp_posts` SET `guid`=replace(`guid`,'http://1.1.1.1/','https://example.com/' + `post_name`) WHERE (`post_parent`=0 AND `post_type` IN ('post','page'));

这会更新 guid 以对没有父级的所有 postpage 类型使用新协议、域和当前 post_name 值(post_parent=0)。请注意,子 posts/pages 和自定义永久链接 slug 的 URL 仍然会给您带来问题,需要密切注意以确保正确重建它们。