regex - Apache 重写规则 - 正则表达式帮助

标签 regex apache mod-rewrite url-rewriting

我有 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/

相关文章:

regex - Bash 案例条件

java - 检查字符串是否没有字母

python - 当 URL 模式吸收它时忽略 `/static`

python - mod_wsgi 报告 Pyramid 模块中的语法错误

mod-rewrite - htaccess(https 到 http)

wordpress - 用于 Wordpress 和独立文件夹的 HTTPS 重定向

regex - .htaccess 如何删除文件扩展名和索引文件

ruby - 匹配类似空格的字符的最佳方法是什么?

Java 正则表达式 - 提取字符串中特定单元之前的所有 float

apache - htaccess 重写部分 url 并保留其余部分不变