簡體   English   中英

Apache重寫規則-正則表達式幫助

[英]Apache rewrite rule - regex help

我有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個十六進制數字
  • / [AZ - ] +(/ \\ d +)? 表示“ /”,然后至少為1(任何小寫字母或破折號),然后為“ /”,再加上一些數字
  • 圍繞(...)?的正則表達式(...)? 表示其中之一

僅供參考,此正則表達式與相關問題的所有網址均緊密匹配

如果你想匹配,使用:

^(?!/v/[a-f0-9]{32}(/[a-z-]+(/\d+)?)?$)

這個怎么樣:

\\/v\\/[a-f0-9]{32}(\\/(login|logout|access|delete-attendee\\/:\\d+|edit-attendee\\/:\\d+|finalise)?

這只會與您接受的網址匹配。 您應該根據自己的口味或正則表達式和適當的轉義字符進行調整。

您說過要在URL不匹配的情況下進行重定向,因此首先必須制定一個與所有有效URL匹配的規則,然后添加! 取消比賽。

RewriteEngine On
RewriteRule !^v/[0-9a-f]{32}(/(login|logout|access|delete-attendee/\d+|edit-attendee/\d+|finalise))?$ http://your-other-domain/ [R]

以上規則應放在網站根目錄下的.htaccess文件中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM