正则表达式匹配除 404 和 410 以外的任何以数字结尾的链接

标签 regex .htaccess

我还是 Regex 的新手,我想知道你是怎么做到的。

想法是匹配任何以/23.../(数字)结尾但不以 /410/ 结尾的链接和 /404/

目的是将它放在 .htacces 中,这样我就可以将旧页面重定向到 410。

每个旧页面的形状都是 http://www.blabla.com/something/2/ http://www.blabla.com/something/3/等等……

所以我已经完成了这个正则表达式,除了它也包括 404 和 410 而我不允许。

^(.*?)\/\d+$ https://regex101.com/r/tD2sX0/2

然后我很难接受这个,但是它不能正常工作,因为它没有捕获我的 URL,我不确定为什么。

^(.*?(404|410))\/\d+$ https://regex101.com/r/tD2sX0/4

我们很乐意接受一点帮助。

最佳答案

您可以在否定前瞻中添加异常:

^(.*?)\/(?!(?:404|410)$)\d+$

参见 regex demo

前瞻对 \d+(=1 位或更多位)施加了限制,因此数字序列不能是 404410

我正在使用一个非捕获组来保持反向引用列表的清洁。字符串 anchor 的 $ 结尾在前瞻中非常重要,因为它仅将排除的数字限制为 404410(否则,它还会排除 41004)。

关于正则表达式匹配除 404 和 410 以外的任何以数字结尾的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33498149/

相关文章:

mysql - 带数据库 ID 的 Htaccess 重定向 url

php - 如何使用 .htaccess 重写使用 get 变量的 url

apache - 将 Noindex Follow 设置为子域 - robots.txt

python - 检查字符串中的有效域名?

C++正则表达式错误(未处理的异常)

javascript - 将表解析为正则表达式方法

regex - mod_rewrite RewriteCond - 仅域部分需要 Ncflags吗?还有一些

php - 克莱因路线不返回任何内容

regex - Django-Rest-Framework动态url(动态前缀)

PHP 函数转义 MySQL 正则表达式语法