[英]Regex for NGINX Rewrite on Profile URLs
我正在進行NGINX重寫。 我想匹配是否存在,並且它不只是將那里的內容設置為$ 2。
rewrite ^/profile/(([a-zA-Z0-9_-]*-u)|(^\s*$))([0-9]+)$ /profile/$2/ redirect;
這不是很正常,現在可以匹配/ a-u4 /,但我希望它也匹配/ 4 /。
正則表達式可能嗎?
是的,有可能。 我從您想匹配/ profile / Name-u000 /或/ profile / 000 /的注釋中了解到
此正則表達式將起作用:
^/profile/([a-zA-Z0-9_-]+-u)?([0-9]+)/$
這會將匹配的任何數字(000部分)放入$ 2。
制定完整規則:
rewrite ^/profile/([a-zA-Z0-9_-]+-u)?([0-9]+)/$ /profile/$2/ redirect;
但是請不要使用它! 如果您要這樣做,它將只會創建一個重定向周期。 但是我需要...
澄清度
我知道您可能需要進行調整才能准確地確定您想要的內容,因為我不清楚您要獲取的金額是2美元。 讓我知道,我將更新我的答案。 如果這只是您要捕獲的數字,那么您希望將/ profile / 000 /重定向到其自身而不進行任何更改,因此無需執行該部分,僅/ profile / Name-u000 /就需要重定向。 讓我知道我是否想念一些東西。
正則表達式如何工作
^/profile/
匹配字符串的開頭,后跟/ profile /。
([a-zA-Z0-9_-]+-u)?
(可選)匹配1個或多個字母,數字,下划線或破折號,后跟-u,並將其捕獲到$ 1。 括號后的問號是使其成為可選項的原因。 請記住,第一部分(在-u之前)甚至可能以下划線或破折號開頭或結尾,而您可能想要也可能不需要。
([0-9]+)
匹配1個或多個數字並捕獲至$ 2。
/$
在字符串末尾用正斜杠完成匹配。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.