[英]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個十六進制數字 (...)?
的正則表達式(...)?
表示其中之一 僅供參考,此正則表達式與相關問題的所有網址均緊密匹配
如果你想不匹配,使用:
^(?!/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.