Nginx - 重写 URL 包含 amp/ 以从末尾删除 amp/

Nginx - Rewrite URL containing amp/ to remove amp/ from the end

上周我正在使用 wordpress 并安装了一个 AMP 插件。玩了一会儿之后,我决定将其删除,直到 Google 使 AMP 也能在非新闻网站上突出。

安装时,我的一些 AMP 页面在社交媒体上得到了共享,现在访问者访问我的网站是为了 AMP URLs。他们看到原始页面,但 URL 保留并在 Google Analytics 中显示为与非 AMP 版本不同的页面。

我认为他们也直接攻击我的服务器而不是缓存,这给我的服务器带来了沉重的负担。

我的 AMP URL 看起来像:

www.mysite.com/category/this-is-my-post/amp/

我不熟悉 nginx 重写,也没有正确理解语法。

如何让这个例子 URL 变成:

www.mysite.com/category/this-is-my-post/

这是我到目前为止的 nginx 重写代码,它什么也没做。我在这里做错了什么?

location /amp {
    rewrite ^/amp(/.*)$  last;
}

我也试过这个:

rewrite ^/amp/(.*)$ http://www.myserver.com/ last;

这些解决方案似乎将 /amp/ 从 URL 中移除,如果它位于中间某处,而不是末尾。当 amp 结束时,它拒绝重定向。

此外,如果有 GET 参数(用于跟踪或其他任何东西),我希望它们保留下来而不被重写。

谢谢!

您需要删除 URL 末尾的 amp/ 序列。

rewrite ^(.*/)amp/$  permanent;