我的网站上有一个可能的网址列表,例如
1 http://dev.site.com/People/
2 http://dev.site.com/People
3 http://dev.site.com/Groups/
4 http://dev.site.com/Groups
5 http://dev.site.com/
6 http://dev.site.com/[extraword]
我希望能够匹配所有像 6 这样的 url 并将它们重定向到
http://dev.site.com/?Shorturl=extraword
但我不想重定向前 5 个网址
我尝试了类似
((.*)(?!人物|群组))\r
但是有问题。
有什么帮助吗?
谢谢
最佳答案
您应该在开头检查它不是 People
或 Groups
:
(?!People|Groups)(.*)
目前,您正在检查正则表达式后面是否没有 People
或 Groups
。
根据您使用的语言/框架,您可能还需要使用 ^
和 $
来确保匹配整个字符串:
^(?!People|Groups)(.*)$
您还应该考虑是否要匹配以 People
开头的 url,例如。 http://dev.site.com/People2/
。所以这可能会更好:
^(?!(?:People|Groups)(?:/|$))(.*)$
它会检查 People
或 Groups
的否定匹配是否后跟 url 的结尾或斜杠。
您可能希望确保不匹配空字符串,因此请使用 .+
而不是 .*
:
^(?!(?:People|Groups)(?:/|$))(.+)$
如果你想要一个不带任何斜线的单词:
^(?!(?:People|Groups)(?:/|$))([^/]+)$
https://stackoverflow.com/questions/1055362/