我有 7 个网址:
url: /v/3b89441db7986135e5eb9e1debf0cc23
url: /v/3b89441db7986135e5eb9e1debf0cc23/login
url: /v/3b89441db7986135e5eb9e1debf0cc23/logout
url: /v/3b89441db7986135e5eb9e1debf0cc23/access
url: /v/3b89441db7986135e5eb9e1debf0cc23/delete-attendee/:id
url: /v/3b89441db7986135e5eb9e1debf0cc23/edit-attendee/:id
url: /v/3b89441db7986135e5eb9e1debf0cc23/finalise
我如何编写重写规则,如果这些 URL 不匹配,我将用户重定向到另一个域?
例如/v/之后的部分始终是32个字符的MD5字符串。 :id 部分始终是一个数字。
如果你能给我一个正则表达式(唉,正则表达式从来都不是我的强项)示例
/v/3b89441db7986135e5eb9e1debf0cc23
和
/v/3b89441db7986135e5eb9e1debf0cc23/edit-attendee/:id
那就太好了。
最佳答案
此正则表达式与您的网址匹配:
/v/[a-f0-9]{32}(/[a-z-]+(/\d+)?)?
英文...
/v/
是一个文字[a-f0-9]{32}
表示 32 个十六进制数字- /[a-z-]+(/\d+)?表示“/”,然后至少 1 个(任何小写字母或破折号),然后“/”,然后一些数字
- 在
(...)?
中包围正则表达式意味着其中之一或没有
仅供引用,此正则表达式与相关问题中给出的所有 url 相当紧密地匹配
如果您想要不匹配,请使用此:
^(?!/v/[a-f0-9]{32}(/[a-z-]+(/\d+)?)?$)
关于regex - Apache 重写规则 - 正则表达式帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6830266/