WordPress设置自定义固定链接后页面出现双URL如何处理
WordPress页面存在双URL可访问的原因及解决方法
原因说明
该问题是WordPress默认路由匹配机制的特性导致:
- 你为文章设置了
/post/%postname%的固定链接前缀后,WordPress收到路径带/post/的请求时,会优先匹配对应slug的文章;如果找不到匹配的文章,路由会自动降级查询页面类型的内容,就出现了带/post/前缀的路径也能访问到对应页面的情况。 - 这种双URL访问的场景会产生SEO重复内容问题,建议修正。
解决方法
方法1:服务器层面301重定向(最推荐,性能最优)
301为永久重定向,不会丢失SEO权重。
如果使用Nginx服务器,在站点配置文件中添加以下规则,注意替换为你自己的实际域名:
rewrite ^/post/(.*)$ https://你的实际域名/$1 permanent;
如果使用Apache服务器,在站点根目录的.htaccess文件中,将以下规则放在WordPress默认生成的规则之前:
RewriteEngine On RewriteRule ^post/(.*)$ /$1 [L,R=301]
方法2:WordPress代码层面拦截(无需修改服务器配置)
将以下代码添加到当前主题的functions.php文件中,或者添加到自定义代码片段插件内即可生效:
add_action('template_redirect', function() { // 仅对页面类型的请求生效 if (is_page() && str_starts_with($_SERVER['REQUEST_URI'], '/post/')) { // 直接调用WordPress接口获取页面的正确官方链接 wp_redirect(get_permalink(), 301); exit; } });
注:PHP版本低于8.0的话,将
str_starts_with替换为strpos($_SERVER['REQUEST_URI'], '/post/') === 0即可。
方法3:插件可视化配置(无需写代码)
安装Redirection这类重定向插件,添加一条全局重定向规则:
- 源URL匹配规则填
^/post/(.*) - 目标URL填
/$1 - 重定向类型选择301永久重定向,保存后生效。
验证
配置完成后清空浏览器缓存,访问带/post/前缀的页面路径,确认会自动跳转到无前缀的正确路径即可。
内容的提问来源于stack exchange,提问作者Zafar Abbas
相关产品推荐
相关产品推荐

