WordPress移除AMP——利用Nginx的301重定向删除特定查询字符串“?amp=1”


2020/4/1更新

截止3月24号,Google上已经没有本站AMP网页的索引了,相关Rewrite代码已从Nginx上删除


Accelerated Mobile Pages(简称AMP,意为“加速移动页面”)是Google带领开发的开源项目,目的是为提升移动设备对网站的访问速度。AMP也可指其派生的标准和库等项目成果。AMP在HTML等广泛使用的网络技术基础上进行改良

维基百科

AMP这家伙可谓“请神容易送神难”。在WordPress上,添加AMP只需要一个插件便能将原有的网页自动格式化为AMP。但在不损害SEO的前提下将它移除,却不是那么容易。

在查询的Google相关的资料后,D酱的情况属于“仅移除 AMP 网页,同时保留规范的非 AMP 网页”,需要如下操作:

  1. 从规范的非 AMP 网页的源代码中移除 rel="amphtml" 链接。
  2. 将您的服务器配置为针对已移除的 AMP 网页返回 HTTP 301 Moved Permanently 或 302 Found 响应。
  3. 配置从已移除的 AMP 网页到规范的非 AMP 网页的重定向。

对于第一项,卸载插件时会帮我们自动完成,而后两项则需要我们手动修改Nginx的配置文件来完成

注意:千万不要在Search Console里使用“删除”功能,这会导致原有的非AMP页面被一同删除

在Google的Search Concole中查看到amp网址主要有这几种类型(会有这么多类型的原因全怪我乱改格式...):

  • domain/?p=abc/?amp=1
  • domain/?p=efg&amp=1
  • domain/?amp=1&abc=x&efg=y…

在站点配置文件中添加如下内容

    if ($request_uri ~ "^(.*?)\??\&?amp=1\&?(.*)"){
            set $args1 $1;
            set $args2 $2;
            set $args "";
            rewrite ^ "${args1}?${args2}" permanent;
    
    }
    if ($request_uri ~ "^(.*)\?$"){
            set $args1 $1;
            set $args "";
            rewrite ^ "${args1}" permanent;
    }

之后重启Nginx或者重载配置

如果试验时301重定向没有生效,可以尝试清除浏览器缓存或者使用无痕浏览(隐身)功能

经过本人的验证,这个方法对于图中的所有uri删除"amp=1"都是可行的

PS:“朴素”型的固定链接可能会影响SEO分数,建议尽快换成“数字型”或其他使用路径而不是查询字符串来索引文章的方式,WordPress会自动对旧链接进行重定向,例如https://blog.dalaoweb.top/?p=740/?amp=1,在删除?amp=1后,会自动跳转到新的链接,可以说非常方便了

Quin_Meow

阿巴阿巴阿巴

相关推荐

2 条评论

  1. Jz

    看不太懂,我很困扰…可以救救我吗><(头晕

    • emmm,Nginx的rewrite确实有一点上手门槛,文章里的代码核心还是正则表达式(if括号中双引号内),推荐先去看看https://www.runoob.com/regexp/regexp-tutorial.html,可能会有助于理解。必要的话,可以自己调整来适应自己的站点,推荐配合https://c.runoob.com/front-end/854使用,多试试,总会成功的。

回复 Jz 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注

微信扫一扫,分享到朋友圈

WordPress移除AMP——利用Nginx的301重定向删除特定查询字符串“?amp=1”
返回顶部

显示

忘记密码?

显示

显示

获取验证码

Close