首页 > 解决方案 > Nginx (Perl) 正则表达式从一个 URL 重新路由到另一个

问题描述

我有一个 wordpress 博客,其中有一系列带有自己的 slug 的帖子。最近我注意到人们访问 mysite.com/my-slug/&somestuff 的合法 404 错误。或 mysite.come/my-slug/somestuff。我不知道他们从哪里得到“一些东西”,但我希望能够防止这种情况发生。

我写了一个正则表达式从 mysite.com/my-slug/anything 重新路由到 mysite.com/my-slug/

^/easy-fluffy-american-pancakes/.+

这工作得很好。差不多吧。事实证明,我对任何帖子的打印友好视图是

^/easy-fluffy-american-pancakes/print/1234

1234 是帖子 ID。所以现在,这也被重定向到帖子。如何从重定向中排除打印?

^/easy-fluffy-american-pancakes/(.+)|(?!print/[0-9]*/)

我不能让它工作。要么不匹配,要么我收到太多重定向。

标签: regexperlnginx

解决方案


^/easy-fluffy-american-pancakes/(?!print/[0-9]).+

(?!...)作“后面没有……”。从 , 外部的角度来看(?!...)(?!...)不匹配任何东西,所以在..+之后立即开始匹配/


推荐阅读