我一直在与正则表达式斗争,在读完它45分钟后,我的脑袋在转动。负面的向前看,是什么......? (?:/(?:(?!s \ d +)。)*)+ $< --- OMG !!!
:(
所以,我有一条规则
RewriteRule /([0-9]+) /?id=$1 [R]
,当网址为www.hi.com/123
如果网址为/
或www.hi.com/123abc
,如何刷新www.hi.com/a123bc
(此案例为文档根目录)?
我只是想确保仅包含数字且没有其他的网址匹配。
我试过
RewriteRule /([0-9]+)([^a-z]+) /map.htm?marker=$1 [R]
但奇怪的是,这会刷新到www.hi.com/?id=404
。
答案 0 :(得分:0)
要匹配正则表达式中的1个或多个数字,它将是:
[0-9]+
要匹配正则表达式中的一个或多个数字或字母,它将是:
[0-9a-zA-z]+
对于您的案例,RewriteRule规则将是:
RewriteRule ^([0-9a-z]+)/?$ /map.htm?marker=$1 [NC,L,R=302]
将匹配/123abc
或/123abc/
或/123
或/abc/
,请注意尾部斜杠是可选的。我使用的标志是:
NC - Ignore Case
L - Last
R=301 - Use http status 302 for resulting URL
但是你也问过:
如果是,我怎样才能刷新/(在这种情况下是文档根目录) 网址是www.hi.com/123abc或www.hi.com/a123bc?
该规则将是:
RewriteRule ^([0-9a-z]+)/?$ / [NC,L,R=302]