我最近迁移了一个网站,这个网站有和没有www子域。我将.htaccess配置为始终重定向到www:
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]此外,站点地址现在被配置为使用www:

而permalinks似乎也使用www子域:

但是,如果我将页面的段塞配置为如下所示,并尝试使用post名称访问页面,服务器将发送一个301重定向(带有位置https://example.com/example-slug的GET www.example.com/example-post -> 301,由于.htaccess配置将再次重定向到https://www.example.com/example-slug )。而且,数据库中的所有guids都不包含www。

有没有办法防止这些不必要的重定向?我的SEO分析工具是抱怨重定向链。
发布于 2022-03-09 16:46:49
.htaccess中的设置告诉服务器如何处理请求。由于该站点以前既允许www也允许非www URL,所以您需要保持.htaccess的位置,所以旧的链接可以正确地重定向。但是,这并不能告诉WP它现在生活在www子域中;它在许多地方存储URL。
您可以忽略GUIDs -它们只是唯一的in -但是您可以运行一个搜索并替换脚本或插件来更新数据库中的所有其他URL。
如果启用了WP CLI,则命令为
wp search-replace 'https://example.com' 'https://www.example.com'如果没有,也有数据库迁移插件可以更新所有的URL并在数据库中正确地序列化它们。
https://wordpress.stackexchange.com/questions/403504
复制相似问题