Regex 重写规则:仅允许数字和特定字符串以逗号分隔
我试图重写URL,只允许数字和(可选)单词“all”用逗号分隔 例如,类似这样的内容:mypage/23,15,all,2,all 我试过了,但有个问题。首先,这是我的规则(可能语法错误): 这里的问题是,如果writemypage/23有效(正确),mypage/23,all有效(正确),mypage/23,all,a有效(因为它检测到“all”中的“a”,所以是错误的) 如何修改规则以仅接受整个单词“all”Regex 重写规则:仅允许数字和特定字符串以逗号分隔,regex,.htaccess,mod-rewrite,Regex,.htaccess,Mod Rewrite,我试图重写URL,只允许数字和(可选)单词“all”用逗号分隔 例如,类似这样的内容:mypage/23,15,all,2,all 我试过了,但有个问题。首先,这是我的规则(可能语法错误): 这里的问题是,如果writemypage/23有效(正确),mypage/23,all有效(正确),mypage/23,all,a有效(因为它检测到“all”中的“a”,所以是错误的) 如何修改规则以仅接受整个单词“all” 谢谢。您可以使用此正则表达式: RewriteRule ^mypage/((?:\
谢谢。您可以使用此正则表达式:
RewriteRule ^mypage/((?:\d+|all)(,(?:\d+|all))*)/?$ target-url?str=$1 [L,NC,QSA]
字符类中没有字符分组,即
[…]
试试这个:我认为它应该可以工作
/([\d]+,(all)+)
[] for optional
() for grouping
什么?:代表?
(?:…)
被称为非捕获组,因此这将只利用规则而不捕获它,对吗?对,因此如果URI是/mypage/123,all,78
,它将不捕获单个数字或全部
,但外部(…)
将捕获整个内容,即123,all,78
在捕获组中#1。
/([\d]+,(all)+)
[] for optional
() for grouping