【问题标题】:nginx regex redirect if specific string doesn't exist如果特定字符串不存在,则 nginx 正则表达式重定向
【发布时间】:2018-07-19 15:44:24
【问题描述】:

现在我有一行将任何以 /amp/ 结尾的内容重定向到删除了 amp/ 的 URL(因为我前段时间安装了一个 AMP 插件,然后将其删除,现在正在阻止 404)。

现在我正在再次安装 AMP,但只想让它在其中包含 /news/ 的页面上运行,例如:

https://www.examplesite.com/news/name-of-article/

所以如果它在 URL 中有 /news/,它应该允许 /amp/ 工作而不做重定向:

https://www.examplesite.com/news/name-of-article/amp/

如果它没有 /news/,则不应允许 /amp/,并且应从 URL 的尾端删除 /amp/。

现在我的配置文件中有这个可以随时删除 /amp/:

重写 ^(.*/)amp/$1 永久;

如果在 URL 中找到 /news/,那么正确的重写方式是什么以使其以新方式工作并允许 /amp/?

【问题讨论】:

    标签: regex redirect nginx amp-html


    【解决方案1】:

    您可以在正则表达式中使用否定的前瞻断言来丢弃以/news/ 字符串开头的匹配项。

    例如:

    rewrite ^(?!/news/)(.*/)amp/$ $1 permanent;
    

    详情请见this documenmt

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-09
      • 2010-10-17
      相关资源
      最近更新 更多